未だによくわかっていなかったので簡単にまとめます。
簡単に言うと、FactoryMethodを抽象化したものがAbstructFactoryです。
実際のプログラムで使うのはAbstructの方になりそうです。
FacroryMethod
1
2
3
4
5
6
7
| public class SampleClass{
public static void main(String args[]){
FactoryImpl factory = new FactoryImpl();
SomeObject obj = factory.createSomeObject();
obj.execute();
}
}
|
AbstructFactory
1
2
3
4
5
6
7
| public class SampleClass{
public static void main(String args[]){
Factory factory = new FactoryImpl();
SomeObject obj = factory.createSomeObject();
obj.execute();
}
}
|
要は、変更があった際にFactoryクラス自体を直接書き換えるか、
Factoryクラスの実装を別のFactoryImplクラスに付け替えるかの違いです。
Factory内のInjectionが複数あった時や、Injectionするのはこのセットで決まっている時などはAbstructFactoryを使うと思います。(ほぼ全てかも)