參考資料:工廠方法與抽象工廠
圖片來源:https://unsplash.com/photos/_0JpjeqtSyg
前情提要:
前些時候,我們提到因為pizza店生意太好,因此決定到紐約州來開分店,現在為了讓客人體驗在地風味,因此決定Pizza的麵團、起司、配料等,要開始在地化,那麼假設每一次 new NYPizzaStore 我都需要 依序new出我想要的麵團、起司、配料,這樣等到開始展店,不僅開發,維護也會有許多麻煩,更不用說有時候會漏掉忘記new需要的類別,這時候抽象工廠就可以拿出來用了
什麼是抽象工廠?
引用作者的話,“用一個抽象工廠,定義一個創建產品族的介面,產品族裡面每個產品的具體類別,由繼承抽象工廠的實體工廠決定”,搭配作者用心的圖,我的理解是,我建立一個抽象的pizza原料工廠,裡頭定義了 createCheese() 、createDough()等方法,假設今天要展店紐約,因此我建立一個 NYPizza 原料工廠,並繼承自 pizza原料工廠,如此一來我必須實作抽象的pizza原料工廠,定義的方法,建立出紐約店的原料,這樣就不怕缺漏了
優點
缺點
1.在產品族加一個產品,會非常麻煩,因為原本已經繼承的子類,都要一起更改