【設計模式之三工廠】
前言:
本文中所講解的三工廠指的是簡單工廠,工廠方法,抽象工廠設計模式,在大話設計模式中,三個工廠最後以三姐妹的身份出現在比賽現場中,本文中將三個工廠聯絡起來進行學習。
內容:(一)簡單工廠模式
1.定義
用一個單獨的類來創造例項的過程,這是工廠的定義。那麼簡單工廠是由一個工廠物件決定建立出哪一種產品類的例項。它的實質就是根據工廠類傳入的引數決定例項化那個物件。當你需要什麼,只需傳入一個正確的引數,就可以獲取需要的物件,而無需知道其建立的細節。
2、eg
當你想吃蘋果,只需到超市去買,而無需知道果園是如何生產出蘋果的,那麼果園就相當於一個工廠。
3.UML圖
(二)工廠方法
1.定義
定義一個用於建立的介面,讓子類決定例項化哪一個類。工廠方法使一個類的例項化延遲到其子類。工廠方法定義了一個抽象工廠,抽象工廠的下面有多個子類工廠,故延遲到子類指的是子類工廠。
2.eg
我現在想吃蘋果和黃瓜,那麼我需要去水果店和蔬菜店,這時需要定義一個抽象工廠,食物工廠,下面定義具體的水果工廠和蔬菜工廠,進而例項化類。
3.UML圖
(三)、抽象工廠
1.定義
提供建立一系列相關或相互依賴物件的介面,而無需指定他們具體的類
這裡物件指的是一系列,比如書中的例子指的是SqlServer和Access屬於同一系列的兩個不同的物件,比如同樣是蘋果,有蘋果乾、水果、蘋果罐頭等等,這時需要考慮抽象工廠模式。
2.eg
我想吃蘋果系列的,蘋果乾、蘋果罐頭、新鮮的蘋果等等,這時需要的抽象工廠提供給我乾果店、水果店、超市。這就是抽象工廠使用的場合。
3.UML圖
(四)三工廠之比較
工廠方法是簡單工廠模式的進一步抽象和推廣,抽象工廠是工廠方法的升級版
總結:
簡單工廠設計模式違背了開放-封閉原則,也是最簡單的設計模式,所以不屬於二十三個設計模式之列,工廠方法設計模式克服了簡單工廠的缺點,保持了其優點,抽象工廠設計模式適合提供一個建立一系列相關或相互依賴物件的介面,抽象工廠設計模式也有自己的不足,用反射+抽象工廠,用反射+配置檔案,彌補自己的不足。三個工廠,更需在實踐中體會。
相關文章
- 設計模式之三種工廠模式設計模式
- 設計模式-工廠模式二(工廠方法模式)設計模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 設計模式----工廠設計模式設計模式
- 設計模式-工廠設計模式設計模式
- 【設計模式】工廠模式設計模式
- 設計模式 —— 工廠模式設計模式
- 設計模式-工廠模式設計模式
- 設計模式(工廠模式)設計模式
- 設計模式——工廠模式設計模式
- 設計模式----工廠模式設計模式
- 設計模式之工廠方法模式|抽象工廠模式設計模式抽象
- 工廠設計模式設計模式
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 設計模式學習(二)工廠模式——抽象工廠模式設計模式抽象
- 設計模式——抽象工廠模式設計模式抽象
- 設計模式 —— 抽象工廠模式設計模式抽象
- PHP設計模式-- 工廠模式PHP設計模式
- 設計模式-抽象工廠模式設計模式抽象
- Java設計模式(工廠模式)Java設計模式
- Java設計模式--工廠模式Java設計模式
- Java 設計模式(工廠模式)Java設計模式
- java設計模式-工廠模式Java設計模式
- 設計模式 - 工廠方法模式設計模式
- 設計模式之工廠模式設計模式
- java設計模式 – 工廠模式Java設計模式
- 設計模式 #2 (工廠模式)設計模式
- 設計模式之【工廠模式】設計模式
- 設計模式-工廠方法模式設計模式
- 設計模式~~~工廠方法模式設計模式
- PHP設計模式_工廠模式PHP設計模式
- 設計模式——工廠方法模式設計模式
- 設計模式(四)工廠模式設計模式
- Java設計模式:工廠模式Java設計模式
- 設計模式(三)——工廠模式設計模式
- 【設計模式】工廠方法模式設計模式
- 設計模式-建立型模式-工廠模式(工廠三兄弟) TypeScript設計模式TypeScript