設計模式之工廠模式

2021-06-28 19:46:48 字數 2481 閱讀 5899

1,  簡單工廠

簡單工廠模式(****** factory pattern)屬於類的創新型模式,又叫靜態工廠方法模式(static factorymethod pattern),是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類

簡單工廠模式的核心思想就是:有乙個專門的類來負責建立例項的過程

不足:由於工廠本身包括了所有的收費方式,商場是可能經常性的更改打折額度和返利額度,每次維護或擴充套件收費方法都要改動這個工廠,以致**需重新編譯部署,很麻煩

**如下:

[csharp]view plain

copy

print?

//現金收費工廠類

class cashfactory  

return cs;  

}  

2,  工廠方法

工廠方法模式是定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。

**如下:

[csharp]view plain

copy

print?

//雷鋒工廠

inte***ceifactory  

//學雷鋒的大學生工廠

classundergraduatefactory : ifactory  

}  //社群志願者工廠

classvoluntee***ctory : ifactory  

}  工廠方法模式:針對每乙個物件建立乙個工廠

優點:工廠方法模式實現時,客戶端需要決定例項化哪乙個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說,工廠方法把簡單工廠的內部邏輯判斷移到了客戶端**來進行。如果需要加功能,本來是該工廠類的,而現在是修改客戶端。

缺點:

由於每加乙個產品,就需要加乙個產品工廠的類,增加了額外的開發量。

3,  抽象工廠

提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。

**如下:

[csharp]view plain

copy

print?

//ifactory介面

inte***ce ifactory  

//sqlserve***ctory類,實現ifactory介面,例項化sqlserveruser

class sqlserve***ctory : ifactory  

}  //accessfactory類,實現ifactory介面,例項化accessuser

class accessfactory : ifactory  

}"font-family: kaiti_gb2312; "> 

抽象工廠方法:ifactory

是乙個抽象工廠介面,它裡面應該包括所有的產品建立的抽象方法。

優點: 1

,易於交換產品系列

2,它讓具體的建立例項過程與客戶端分離,客戶端是通過它們的抽象介面操縱例項,產品的具體類名也被具體工廠的實現分離,不會出現在客戶端**中。

缺點:當我們要增加專案表則我需要至少新增3個類,還需要改動ifactory,sqlserve***ctory,和accessfactory才可以完全實現。

改進:

用簡單工廠來改進抽象工廠

去除ifactory,sqlserve***ctory,和accessfactory三個工廠類,取而代之的是dataaccess類。

**如下:

[csharp]view plain

copy

print?

class dataaccess  

return result;  

}  

不足:如果我現在要增加oracle資料庫訪問,本來抽象工廠只增加oraclefactory工廠類就可以了,但現在就比較麻煩了。

改進2:用反射+抽象工廠的資料訪問程式

改進3:用反射+配置檔案實現資料訪問程式

三種工廠模式對比:

舉例說明:

簡單工廠的由來:以前都是我自己生產自己的汽車(自產自用),這樣的話我和汽車之間就是強耦合,沒有我就沒辦法生產。

簡單工廠:乙個汽車公司將各種各樣的汽車生產都放在了乙個工廠裡實現(工廠只負責生產,我只負責使用,降低了我和汽車之間的耦合)

工廠方法:汽車公司將不同種的汽車在不同的工廠內實現.例如:轎車在生產轎車的工廠生產,汽車在生產汽車的工廠生產等(增加新的產品)。

抽象工廠:乙個汽車公司同時生產汽車,轎車,客車,那麼這個汽車公司的每個工廠都要實現生產汽車,轎車,客車的方法。當我要生產各種汽車的不同品牌時,則需要使用抽象工廠模式。也就是產品族的概念。(增加產業線)

區別:

以上三種工廠方法在等級結構和產品族這兩個方向上的支援程度不同。所以要根據情況考慮應該使用哪種方法。

設計模式 設計模式之工廠模式

工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...

c 設計模式 之 工廠模式之 工廠模式

1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...

設計模式 工廠模式之簡單工廠模式

定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...