模式意圖
提供一個介面,創建一系列相關或相互依賴的物件,**無需指定它們具體的類別**。
核心問題
- 系統面臨「一系列相互依賴物件」的創建工作
- 需求變化帶來更多系列物件創建需求
- 如何避免客戶程式與具體物件創建緊耦合?
模型圖
邏輯模型:
物理模型:
生活範例:汽車沖壓設備

- 同一套沖壓機械(抽象工廠)
- 更換沖壓模具(具體工廠)
- 生產右車門、左車門、右前擋泥板、左前擋泥板、引擎蓋等(產品族)
- 三分鐘內完成模具切換(動態切換產品族)
關鍵角色
- AbstractFactory:宣告創建產品族的介面
- ConcreteFactory:實作創建具體產品的方法
- AbstractProduct:產品介面
- ConcreteProduct:具體產品實作
- Client:僅透過抽象介面使用產品
適用場景
- 系統需支援多個產品族,且一次只使用其中一族
- 產品族之間有相依關係,必須搭配使用
- 希望隱藏具體產品創建細節,僅暴露介面