Abstract Factory Pattern
提供一個接口,用於創建相關或依賴對象的家族,而不需要明確指定具體類。即產品增加產品族的概念。
抽象工廠模式會將類別分為兩類:
分別是工廠類別 (Creator) 與 產品類別 (Product) 。
兩者皆有對應的抽象介面,
即抽象工廠類別 (AbstractFactory) 與 抽象產品類別 (AbstractProduct) 。
不同類型的產品結盟成產品族。
優點:
將創建物件的邏輯與物件本身的邏輯分離。
一個工廠只會對應一個產品族類別,遵守開放封閉原則。
缺點:
會使程式碼變得複雜。
不容易替產品族新增新的產品。(須修改抽象工廠介面)
與其他模式的比較:
[簡單工廠模式]:
簡單工廠模式僅擁有一個工廠,
透過 switch 子句,創建同種類型的不同產品。
無法遵守開放封閉原則。
[工廠方法模式]:
工廠方法模式擁有多個工廠,
各個工廠創建同種類型的不同產品。
而抽象工廠模式則是擁有多個工廠,
各個工廠創建多種類型的產品。
不同類型的產品,有著一條隱密的線,形成產品族的關係。
實作技巧:
ʕ •ᴥ•ʔ:把你學會的 S.O.L.I.D 同時發揮出來。