備忘録

物忘れが酷いので

Factory Method

概要

ファクトリメソッドパターンは、インターフェイス
を用いてオブジェクトの生成を柔軟にするデザインパターン
必要に応じて生成するクラスを変えることができるので、再利用性を
高めることができる。
・Productクラス
 ファクトリクラスヲが生成するインスタンスのインターフェイス
・ConcreteProductクラス
 実際に生成されるインスタンス
・Creatorクラス
 ファクトリメソッドを用意するクラス
 Product型のインスタンスを返す
 具象クラスとしてインスタンスを生成させることもある
 ただし、柔軟性が下がる
・ConcreteCreatorクラス
 ConcreteProductを生成するクラス

Factory Methodの実現方法

・インターフェイスでProduct,Creatorを作る。
・それをもとにConcreteProduct,ConcreteCreatorを作る。

interface Creator{
  public Product factoryMethod();
}

interface Product{}

class ConcreteCreator1 implements Creator{
  public Product factoryMethod(){
    return new ConcreteProduct1();
}

class ConcreteCreator2 implements Creator{
  public Product factoryMethod(){
    return new ConcreteProduct2();
}

class ConcreteProduct implements Product{}

public class Sample{
  public static void main(String[] args){
    Creator factory = new ConcreteCreator1();//書き換えるのはここだけ
    Product product = factory.factoryMethod();
  }
}

link
http://ja.wikipedia.org/wiki/Factory_Method_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
http://www.nulab.co.jp/designPatterns/designPatterns2/designPatterns2-2.html

理解が深まったら追記