質問: CFactory.newInstance(); } } 私が理解しているのは、「クラスAまたはZを使うクラスBが、使うクラスのインスタンス化をクラスCFactoryに丸投げすることで、クラスAまたはZへの依存度を下げている」というところまでです。 そこで、この疑似コードに関する質問ですが、 1.クラスBがクラスAまたはZのインスタンスを得るためにコールしているクラスCFactoryのnewInstance()メソッドですが、これはCFactoryをnewしていない(できない)以上、スタティックメソッドと考えていいのでしょうか?しかもこれは抽象メソッドですが直接コールすることができるのでしょうか? 2.この例では結局インスタンス化されるのはクラスAですか?それともクラスZですか?また、その選択のロジックはどこに書かれている(または、書かれるべき)でしょうか? ファクトリパターンの勉強をしようと思って、ネットであれこれ調べてみても概念を説明する疑似コードや図は見つかるのですが、具体的な実装については未だに理解できません。 ご教授のほどよろしくお願いします。
回答: 単純に、class Bの内容が間違っています。 抽象メソッドは直接呼べません。 正しくは、以下のようなコードになります。 ``` void method(CFactory factory) { C instance = factory.newInstance(); } ``` 具体的なファクトリのインスタンスは、外部から与えられます。 そのファクトリを使って、具体的なインスタンスを生成します。