Factory Method ってなに?
他のクラスのインスタンス化の責任を負う必要がある普通の実装。
class Sample { class showName() { Name name = new AName(); System.out.println(name.getName()); // I'm A Name name = new BName(); System.out.println(name.getName()); // I'm B } } abstract class Name { abstract void getName(); } class AName extends Name { void getName() { System.out.println ("I'm A"); } } class BName extends Name { void getName() { System.out.println ("I'm B"); } }
インスタンスの生成は一箇所に集約して、責任を Factory に任せる実装
abstract class Factory { abstract Name factoryMethod(); } public class NameFactory extends Factory { abstract Name factoryMethod(); return new GetName(); } } public abstract class GetName { public abstract void manA(); public abstract void manB(); } public class Name extends GetName { public void manA() { System.out.println ("I'm A"); } public void manB() { System.out.println ("I'm B"); } } class Sample { void hoge() { Factory factory = new NameFactory(); Name name = factory.factoryMethod(); name.manA(); // I'm A name.manB(); // I'm B } }