設計模式 - 工廠三兄弟

簡單工廠模式、工廠方法模式、抽象工廠模式都屬於建立型模式。這三個模式都是爲了解決對象的建立而生。這三個工廠模式就像孿生兄弟同樣,老是讓人傻傻分不清楚。今天就依據我的理解對三個模式總結對比一下。設計

1、定義

模式 定義
簡單工廠 別名靜態工廠方法(Static Factory Method)模式。在簡單工廠模式中,能夠根據參數的不一樣返回不一樣類的實例。
工廠方法 定義一個建立對象的接口,讓子類決定實例化哪個類。工廠方法使一個類的實例化延遲到其子類。
抽象工廠 提供一個建立一系列相關或相互依賴對象的接口,而無需指定它們的具體類。

2、結構

簡單工廠
工廠方法
抽象工廠

3、角色關係

簡單工廠 工廠方法 抽象工廠
工廠角色
抽象產品角色
抽象產品
  _ 具象產品
抽象工廠
  _ 具象工廠
抽象產品
  _ 具象產品
抽象工廠
  _ 具象工廠

4、總結

簡單分析三種模式的結構圖以及所擁有的結構關係,咱們不難看出三種模式的不一樣點:code

  • 建立過程
簡單工廠 工廠方法 抽象工廠
建立過程 由工廠內部直接根據不一樣條件建立 定義一個抽象建立產品接口,將實例化過程延遲到子類 提供一個建立一系列或者相關依賴對象的接口,有子類實現實例化
區別 1.將客戶端判斷邏輯抽象到工廠內
2.用來生產同一等級結構中的任意產品,沒法新增產品
1.判斷邏輯依舊在客戶端
2.用來生產同一等級結構中的固定產品,可任意增長新產品
1.判斷邏輯依舊在客戶端
2.用來生產不一樣產品族的所有產品,不可任意增長新產品,可添加任意產品族
  • 工廠模式的退化 當抽象工廠模式中每個具體工廠類只建立一個產品對象,也就是隻存在一個產品等級結構時,抽象工廠模式退化成工廠方法模式;當工廠方法模式中抽象工廠與具體工廠合併,提供一個統一的工廠來建立產品對象,並將建立對象的工廠方法設計爲靜態方法時,工廠方法模式退化成簡單工廠模式。

以上三種工廠 方法在等級結構和產品族這兩個方向上的支持程度不一樣。因此要根據狀況考慮應該使用哪一種方法。cdn

相關文章
相關標籤/搜索