1. 程式人生 > 實用技巧 >【重溫設計模式】之004抽象工廠模式

【重溫設計模式】之004抽象工廠模式

【重溫設計模式系列原始碼】

抽象工廠模式

基本原理

含義

抽象工廠模式,即Abstract Factory Pattern,提供一個建立一系列相關或相互依賴物件的介面,
而無須指定它們具體的類;具體的工廠負責實現具體的產品例項。

解決的問題

即工廠方法模式的缺點: 每個工廠只能建立一類產品

組成部分

組成 關係 作用
抽象產品(IProduct) 產品頂級抽象父類 描述產品的公共介面
抽象子產品(IxxProduct) 具體產品類的父類,頂級抽象父類的子類 描述相對具體的抽象產品的公共介面
具體產品(XxProduct) 具體產品類,抽象父類的子類 描述具體的產品
抽象工廠(Factory) 具體工廠的父類 描述工廠的公共介面
具體工廠(XxFactory) 具體工廠類,抽象工廠的子類 描述具體工廠

UML類圖

使用步驟

  1. 建立產品標準
  2. 建立產品抽象類(一系列相關的產品)
  3. 建立具體產品類
  4. 建立工廠標準
  5. 建立生產具體產品的工廠

優點

  • 低耦合

將具體產品的建立延遲到子類。

  • 更符合開閉原則

新增系列相關產品時,只需要增加具體的工廠和工廠需要生產的具體產品即可。

  • 符合單一職責原則,

每個具體工廠類只負責建立對應的產品

缺點

抽象工廠模式很難支援新種類產品的變化。
這是因為抽象工廠介面中已經確定了可以被建立的產品集合,
如果需要新增新產品,此時就必須去修改抽象工廠的介面,這樣就涉及到抽象工廠類的以及所有子類的改變,
這樣也就違背了“開發——封閉”原則。

適用場景

  • 一個系統不依賴產品類例項的建立和組合。
  • 這個系統有多個系列的產品,而系統中只能消費其中的一系列產品。
  • 系統要求提供一個產品類的庫,所有產品以同樣的接口出現,客戶端不需要依賴具體實現。

總結

盡信書不如無書,任何脫離實際業務的架構都是在耍流氓;
所謂原則,只是為了更好地為我們服務;
具體如何應用需要我們在業務實踐中靈活把控。