一個例子穿插三種不同的工廠模式形態
1、簡單工廠模式
工廠類根據提供給它的引數,返回的是幾個產品中的一個類的例項。通常情況下,它返回的是一個公共的父類,在這個工廠類裡面,父類的引用指向子類的物件
廠長生產杯子時先不讓生產線知道我要產的是玻璃的還是瓷的,而是讓它在不知道具體材料的情況下先做它能做的,等到它把模具做好,只需要向其中填充玻璃原料或者瓷原料就可以造出同一形狀的具體杯子了。所以就有了簡單工廠模式。
<span style="font-size:14px;"> class CupFactory
{
public static CUP CreateCup(string 種類)
{
杯子 cup = null;
switch (種類)
{
case “玻璃杯":
{
cup = new GlassCup();
break;
}
case “陶瓷杯":
{
cup = new ChinaCup();
break;
}
}
return cup;
}
}
</span>
<span style="font-size:14px;"> static void Main(string[] args)
{
杯子 cup;
cup = CupFactory.CreateCup(種類);
}
</span>
2、工廠方法模式
定義一個用於建立產品物件的工廠的介面,而將實際建立工作放在工廠介面的子類中。
簡單工廠模式有一個問題,就是當我現在想生產一個同樣形狀的鐵杯時,工廠裡並沒有定義相應的處理流程,只能更改CreateCup方法,這就不合理了(違背封閉原則)。
我現在只是想生產鐵杯,你只要在最後的時候把玻璃原料換成鐵的不就行了嗎,幹嘛還要更改整條生產線呢?於是就有了工廠模式。
static void Main(string[] args)
{
IFactory CupFactory = new 鐵杯子factory();
Cup cup = CupFactory.CreateCUP();
}
3、抽象工廠模式
用來建立產品族
假如現在工廠主想要生產水壺(kettle),用工廠模式就不得不再造一條水壺生產線,能不能在水杯生產線同時生產水壺呢?這就是抽象工廠模式。在原CupFactory中加一個CreateKettle()方法,用來生產水壺。
總結:
簡單工廠模式:用來生產同一等級中的任意產品(不支援增加新產品)。產品具體構造細節是在一個個if/else分支,或者在switch/case分支裡面的。如果要增加一個產品,則需要修改工廠類,增加if/else分支,或者增加一個case分支。
工廠方法模式:用來生產同一等級結構中的固定產品(支援增加新產品)。將工廠和產品之間的耦合降低,將具體產品的構造過程放在了具體工廠類裡面。在以後擴充套件產品的時候方便很多,只需要新增一個工廠類,一個產品類,就能方便的新增產品,而不需要修改原有的程式碼。該模式更符合開發中的OCP原則(open
close principle),對擴充套件開放,對修改關閉。
一個抽象產品類,可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
抽象工廠模式:用來生產不同產品族的全部產品(不支援產品增加,但支援產品族的增加)
多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類可以建立多個具體產品類的例項。
相關文章
- 三種工廠模式與策略模式模式
- 設計模式:三種工廠模式設計模式
- 談談三種工廠模式模式
- 設計模式之三種工廠模式設計模式
- Python實現工廠模式的兩個例子Python模式
- 工廠三兄弟之抽象工廠模式(一)抽象模式
- 工廠三兄弟之工廠方法模式(一)模式
- 常見的三種工廠模式區別模式
- 深入理解Java的三種工廠模式Java模式
- 三種工廠模式的優劣比較模式
- 工廠三兄弟之簡單工廠模式(一)模式
- java23種設計模式——三、工廠模式Java設計模式
- 工廠三兄弟之簡單工廠模式(三)模式
- 常見的三種工廠模式區別及單例模式模式單例
- 一篇搞定工廠模式【簡單工廠、工廠方法模式、抽象工廠模式】模式抽象
- 設計模式-建立型模式-工廠模式(工廠三兄弟) TypeScript設計模式TypeScript
- 工廠三兄弟之抽象工廠模式(二)抽象模式
- 設計模式(三)——工廠模式設計模式
- 舉兩個例子以快速明白Java中的簡單工廠模式Java模式
- 設計模式-靜態工廠模式設計模式
- 工廠三兄弟之簡單工廠模式(二)模式
- 設計模式之工廠模式(三)設計模式
- 23種設計模式(抽象工廠模式)設計模式抽象
- 23種設計模式(一)---簡單工廠設計模式設計模式
- 設計模式 - 工廠三兄弟設計模式
- 設計模式(三):抽象工廠設計模式抽象
- 【設計模式之三工廠】設計模式
- 設計模式(三)抽象工廠方法模式設計模式抽象
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- 簡單工廠模式—>工廠模式模式
- 工廠方法模式GoF23種設計模式之建立型模式之工廠方法模式Go設計模式
- 23種設計模式之工廠方法模式設計模式
- 23種設計模式之抽象工廠模式設計模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 請教一個關於工廠模式的問題模式
- 工廠模式之簡單工廠模式模式
- Java設計模式學習三-----工廠模式Java設計模式