簡單工廠模式、工廠方法模式、抽象工廠模式都屬於建立型模式。這三個模式都是爲了解決對象的建立而生。這三個工廠模式就像孿生兄弟同樣,老是讓人傻傻分不清楚。今天就依據我的理解對三個模式總結對比一下。設計
模式 | 定義 |
---|---|
簡單工廠 | 別名靜態工廠方法(Static Factory Method )模式。在簡單工廠模式中,能夠根據參數的不一樣返回不一樣類的實例。 |
工廠方法 | 定義一個建立對象的接口,讓子類決定實例化哪個類。工廠方法使一個類的實例化延遲到其子類。 |
抽象工廠 | 提供一個建立一系列相關或相互依賴對象的接口,而無需指定它們的具體類。 |
簡單工廠 | 工廠方法 | 抽象工廠 |
---|---|---|
工廠角色 抽象產品角色 |
抽象產品 _ 具象產品 抽象工廠 _ 具象工廠 |
抽象產品 _ 具象產品 抽象工廠 _ 具象工廠 |
簡單分析三種模式的結構圖以及所擁有的結構關係,咱們不難看出三種模式的不一樣點:code
簡單工廠 | 工廠方法 | 抽象工廠 | |
---|---|---|---|
建立過程 | 由工廠內部直接根據不一樣條件建立 | 定義一個抽象建立產品接口,將實例化過程延遲到子類 | 提供一個建立一系列或者相關依賴對象的接口,有子類實現實例化 |
區別 | 1.將客戶端判斷邏輯抽象到工廠內 2. 用來生產同一等級結構中的任意產品,沒法新增產品 |
1.判斷邏輯依舊在客戶端 2. 用來生產同一等級結構中的固定產品,可任意增長新產品 |
1.判斷邏輯依舊在客戶端 2. 用來生產不一樣產品族的所有產品,不可任意增長新產品,可添加任意產品族 |
以上三種工廠 方法在等級結構和產品族這兩個方向上的支持程度不一樣。因此要根據狀況考慮應該使用哪一種方法。cdn