抽象工廠模式

Abstract Factory Pattern

提供一個接口,用於創建相關或依賴對象的家族,而不需要明確指定具體類。即產品增加產品族的概念。

Example: 運輸系統


抽象工廠模式會將類別分為兩類:
分別是工廠類別 (Creator)產品類別 (Product)
兩者皆有對應的抽象介面。

不同類型的產品結盟成產品族


優點:
將創建物件的邏輯與物件本身的邏輯分離。
一個工廠只會對應一個產品族類別,遵守開放封閉原則

缺點:
會使程式碼變得複雜。
不容易替產品族新增新的產品。(須修改抽象工廠介面)


與其他模式的比較:
[簡單工廠模式]:
簡單工廠模式僅擁有一個工廠
透過switch子句,創建同種類型不同產品

無法遵守開放封閉原則

[工廠方法模式]: 
工廠方法模式擁有多個工廠
各個工廠創建同種類型不同產品


抽象工廠模式則是擁有多個工廠
各個工廠創建多種類型的產品。
不同類型的產品,有著一條隱密的線,形成產品族的關係。

ʕ •ᴥ•ʔ:把你學會的S.O.L.I.D同時發揮出來。