抽象ファクトリでは、オブジェクトの作成を担当する型を宣言します。
これにより、次のようなスイッチが不要になります。
if( type == ONE ) {
doOne();
} else if( type == TWO ) {
doTwo();
} etc.
または同じ:
switch( type ) {
case ONE: doOne(); break;
case TWO: doTwo(); break;
etc....
}
これに:
MyAbstractFactory factoryInstance = ... ?
SomeObject object = factoryInstance.createObject();
object.doX();
私が理解しているように、AbstractFactoryは正しいオブジェクトを作成し、それが多形的に正しい動作を実行します。
次に、そのオブジェクトをプログラムで10〜20回または100回使用する場合、毎回切り替えを繰り返す必要はありません。対応するメソッドを実行し、ポリモーフィズムに任せてください。
object.doY();
object.doZ();
新しいタイプの追加は、新しいコンクリート工場を作成するのと同じくらい簡単です。
これはすべて私には明らかです。だが...
そもそもコンクリート工場はどこで、どのように(一般的に)作られているのでしょうか?
私は常に1つのポイント(通常はmain()メソッドまたはConfiguration.init()メソッド)を使用してきましたが、これには避けられないif / else | switch構文がありますが、少なくとも1回だけ使用されます。
しかし、私はこれを「本能的に」(または常識的に)行いましたが、パターンがどこで作成されるべきかを説明しているドキュメントを読んだことはありませんでした。
:)