跳到主要內容

發表文章

目前顯示的是有「Abstract Factory Pattern」標籤的文章

工廠模式 - 抽象工廠模式 (Abstract Factory Pattern)

        延續前一篇 工廠方法模式 ,我們可以有多間加盟店,並且照著固定的 SOP 製作 pizza,加盟店只要專心處理 createPizza() 就好。最後還差一個步驟就能讓我們的 pizza 店更好,就是對 pizza 原料的控管。每個地區會有不同的原料,如何依照不同地區給予不同原料呢?要什麼原料就多一個工廠方法是個不錯的方法,既然會有很多原料工廠方法的話,把它們全集中在一起呢?這就是抽象工廠的概念了。我們可以先定一個抽象的原料工廠: public interface PizzaIngredientFactory { // 每個原料都是一個類別,每個原料都有一個 // 對應的方法建立該原料 public Sauce createSauce(); public Cheese createCheese(); public Vaggies createVaggies(); }         假如每個工廠的實體(子類別)都有一種通用的機制要實作,例如都要先檢查原料,清洗原料之類的,上面的例子也可以改成抽象類別。         我們接下來就可以實作紐約風的原料工廠: // 對於所有原料,紐約原料工廠都提供了紐約的版本 public class NYPizzaIngredientFactory implements PizzaIngredientFactory { @Override public Sauce createSauce() { return new NYSauce(); } @Override public Cheese createCheese() { return new NYCheese(); } @Override public Veggies createVeggies() { return new NYVeggies(); } }         接下來要修改 Piz...