一、簡單工廠模式
1、名稱:簡單工廠模式
2、結構:(1)提供靜態介面的工廠類 (2)抽象產品類 (3)繼承自抽象產品類的具體產品類
3、動機:封裝產品建立的具體過程,對外只提供乙個統一的建立產品物件的介面,內部通過業務和邏輯來辨別具體建立哪種具體產品類的物件。
4、優點:簡單,容易理解。
5、缺點:根據開閉原則(對擴充開放,對修改封閉),不利於產品的擴充。在出現新產品的情況時,在工廠類中必須新增相應的業務和邏輯判斷來維護新產品的建立介面,使工廠模擬較被動。
6、使用條件:產品比較穩定,不會頻繁的增加新產品的情況下,可以使用簡單工廠模式。
7、理解與分析: 簡單工廠模式這個名稱對理解此模式的結構和使用條件不是非常清晰,想不明白為什麼叫」簡單工廠」。我更喜歡把它理解為「全能工廠」或者「超級工廠」。在乙個工廠內能夠生產工廠現階段能生產的所有產品,雖然此工廠比較「全能」,但它不專業,當有新產品發明出來後,必須對工廠進行改造和技術革新才能生產新產品。有「全能型」的工廠,那麼也會有「專業型」的工廠,那就是「工廠方法模式」。
二、 工廠方法模式
1、名稱:工廠方法模式
2、結構:(1)抽象工廠類 (2)具體工廠類 (3)抽象產品類 (4)具體產品類
3、動機:建立單一型產品。
4、優點:特定的產品由特定的工廠建立,兩者為一對一關係,結構清晰利於擴充和維護。
5、缺點:如果有大量的新產品,那麼工廠類和產品類的數量將成倍的增長,這不是我們所希望的。
6、使用條件:產品更新比較頻繁,但是產品類別數量不是很大的情況下,可以使用工廠方法模式。
7、理解與分析:相應於「簡單工廠」叫「全能工廠」,我把「工廠方法」也理解為「專業工廠」,乙個工廠只生產一種產品,要的就是專業。拿現實的工廠來舉例,一類工廠什麼都能生產,這類工廠遇到新產品時必須停產進行技術革新公升級後才能投入使用;而另一類工廠只能生產一種產品,當有新產品研發出來後就開設分廠進行生產,然後隨時產品越來越多,分廠也越來越多,最後管理跟不上了。兩者各有利弊,那麼如何取其精華去其糟粕呢,這就有了「全能工廠」與「專業工廠」的綜合性工廠-「工廠生產線」。
三、工廠生產線模式
1、名稱:工廠生產線模式
2、結構: (1)提供靜態介面的工廠類 (2)提供生產線介面 (3)抽象產品類 (4)具體產品類
3、動機:取簡單工廠的簡單易維護,去工廠方法模式的單一化。
4、優點:動態的新增和刪除產品建立功能
5、缺點:結構比較負責,需要語言功能支援,通用性不強。
6、原型:
(1)工廠生產線類
1public
class
factoryassembly
2
1011
public
static
bool remove(type type)
12
1516
public
static car produce(type type)
17
23return
null;
24 }
25 }
(2)產品類
1public
abstract
class
car2 56
public
class benzcar : car
7
12 }
1314
public
class bmwcar : car
15
20 }
2122
public
class audicar : car
23
28 }
(3)實現**
1 factoryassembly.add(typeof(benzcar), new factoryassembly.assemble(delegate()
2 ));
5 factoryassembly.add(typeof(bmwcar), new factoryassembly.assemble(delegate()
6 ));
9 factoryassembly.add(typeof(audicar), new factoryassembly.assemble(delegate()
10 ));
13 factoryassembly.produce(typeof(benzcar)).drive();
14 factoryassembly.produce(typeof(bmwcar)).drive();
7、 理解與分析:此模式結合了簡單工廠和工廠方法各自的優點。把建立產品的方法抽離出來,通過動態新增和刪除產品生產方法使模式更強的適應性。與現實工廠相聯絡,就像工廠內的各生產線,把「專一工廠」的分廠模式改進為工廠流水線,乙個產品一條生產線,增加新產品則增加乙個生產方法,很容易理解。
四、抽象工廠模式
1、名稱:抽象工廠模式
2、結構:(1)抽象工廠類 (2)具體工廠類 (3)抽象產品類 (4)具體產品類
3、動機:乙個工廠內建立相同風格的不同產品物件。
4、優點:同一系列、同一風格的產品在同一工廠內建立有利於維護產品風格的統一性。
5、缺點:與工廠方法類似,會產生大量的工廠類和產品類,另外建立了某種新風格的產品後,必須同時建立相同風格的其他產品物件。
6、使用條件:在多個產品樹之間擁有相同風格或系列的產品物件,這些產品物件稱為產品族。
7、理解與分析: 抽象工廠模式致力於產品風格的統一與完整,達到高程度的系列化。
工廠設計模式一 簡單工廠模式
工廠設計模式實現了建立者和呼叫者的分離。類別 1.簡單工廠模式 2.工廠方法模式 3.抽象工廠模式 遵循的設計原則 1.ocp 開閉原則,open closed principle 乙個軟體的實體應當那個對擴充套件開放,對修改關閉 2.dip 依賴倒置原則,dependence inversion ...
工廠設計模式(一) 簡單工廠模式
工廠設計模式可分為 簡單工廠模式 工廠方法模式 抽象工廠模式 第一篇我們來聊聊 理解 假設某些例項具有相同的方法,可以根據引數的不同返回不同的例項,被建立的例項通常都具有共同的父類,那麼可以考慮使用簡單設計模式來實現。例如可以實用簡單工廠模式設計乙個可以建立不同幾何形狀 如圓形 方形和三角形等 的繪...
設計模式 一 工廠模式 簡單工廠
以前總覺得設計模式純屬扯淡,浪費精力,10 能搞定的事情非要寫那麼多的介面或者實現類.為什麼要用設計模式,開發有乙個重要的原則 對修改關閉,對擴充套件開放.因為如果把 全部都雜糅到乙個類中,第一 復用性太差,擴充套件性不強.第二,修改起來一改巨改,改動即意味著要增加測試人員工作量,且引入修改bug如...