factoryを使わないパターン
①いす職人にウォールナットの木材で椅子を作るよう指示
factoryを使うパターン
①ウォールナット材職人に木材用意するよう指示
②いす職人に指定の木材職人から渡された木材で椅子を作るよう指示
※どんな木材かは意識しない。
登場クラスと紐づけ
iSample・・・広義の木材
Sample・・・ウォールナット材
iCreator・・・広義の木材職人
Creator・・・ウォールナット材職人
Logic・・・いす職人
プログラム
class Sample implements ISample {
}
interface ISample {
}
interface ICreator {
public ISample create();
}
class Creator implements ICreator{
@Override
public ISample create() {
return new Sample();
}
}
class Logic {
private ICreator creator;
Logic(ICreator creator) {
this.creator = creator;
}
void doLogic() {
ISample s = creator.create();
}
}
public class Outer {
public static void main(String[] args) {
Logic l = new Logic(new Creator());
l.doLogic();
}
}
ひのき椅子を作らせたい場合、プログラムを以下のように対応する
・ひのき材(hSample)を追加
・ひのき材職人(hCreator)を追加
・いす職人に引き継ぐ職人をウォールナット職人⇒ヒノキ職人に差し替える(new Logic(new hCreator())