Simple Factory

simple-factory.png

ポイント

  • Factory用のクラスを作ること

実装例

保守が容易じゃないダメな例 factoryを使った良い例
Pizza orderPizza(String type){
        Pizza pizza = null;
        if(type.equals("チーズ")){
            pizza=new CheesePizza();
        }else if(type.equals("生ハム")){
            pizza=new RawHam();
        }else if(type.equals("マルゲリータ")){
            pizza=new Margherita();
        }
        pizza.prepare();
        pizza.bake();
        pizza.cut();
        pizza.box();
        return pizza;
    }
public class PizzaStore {
    SimplePizzaFactory factory;//ピザ店がシンプルピザ工場への参照を持つ
    //コンストラクタでファクトリを渡す
    public PizzaStore(SimplePizzaFactory factory){
        this.factory=factory;
    }
 
    Pizza orderPizza(String type){
        Pizza pizza = null;
        pizza=factory.createPizza(type);
        pizza.prepare();
        pizza.bake();
        pizza.cut();
        pizza.box();
        return pizza;
    } 
}
public class SimplePizzaFactory {
 
    public Pizza createPizza(String type){
        Pizza pizza=null;
        if(type.equals("チーズ")){
            pizza=new CheesePizza();
        }else if(type.equals("生ハム")){
            pizza=new RawHam();
        }else if(type.equals("マルゲリータ")){
            pizza=new Margherita();
        }
        return pizza;
    }
}

サポートサイト Wikidot.com