工廠三姐妹,指的就是簡單工廠模式,工廠方法模式,和抽象工廠模式。他們三個都屬於建立型模型,主要用於描述如何建立物件。這三個姐妹之間有相似的地方,也有很多不同的地方,下面讓我們來具體看看他們的介紹和區別吧。
簡單工廠模式(****** factory pattern):定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態(static)方法,因此簡單工廠模式又被稱為靜態工廠方法(static factory method)模式,它屬於類建立型模式。
簡單工廠實現計算器結構圖:
簡單工廠實現計算器**例項:
public class operationfactory //簡單運算工廠類
return oper ;}}
介紹:簡單工廠模式:到底要例項化誰,將來會不會增加例項化的物件,比如增加開根運算,這是很容易變化的地方,應該考慮用乙個單獨的類來做這個創造實力的過程,這就是工廠。
優缺點:
簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。
缺點:當增加功能的同時,就要增加『case』分支,就要修改原有的類,這樣擴充套件和修改就都開放了!違背了開放-封閉原則。
工廠方法模式(factory method):定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法是乙個類的例項化延遲到其子類。【dp】
工廠方法模式結構圖:
工廠方法模式計算器例項結構圖:
對比:工廠方法模式實現時,客戶端需要決定例項化哪乙個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說工廠方法把簡單工廠的內部邏輯判斷移到了客戶端**來進行。你想要加功能,本來是該工廠類,而現在是修改客戶端。
工廠方法克服了簡單工廠違背開放-封閉原則的缺點,又保持了封裝物件建立過程的優點。他們都是集中了封裝了物件的建立,似的要更換物件時,不需要做大的改動就可實現,降低了客戶程式與產品物件的耦合。工廠方法模式是簡單工廠進一步的抽象和推廣。由於使用了多型克服了簡單工廠的缺點,但每增加乙個產品,也就增加了額外工作量。
抽象工廠模式(abstract factory):提供乙個建立一系列相關或相互依賴物件的介面而無需制定他們具體的類。【dp】
抽象工廠模式結構圖:
資料庫的更改例項結構圖:
對比:
最大的好處是易於交換產品系列,由於具體工廠類,ifactory factory=new accessfactory(),如在乙個應用中只需要在初始化的時候出現一次,這就使得改變乙個應用的具體工廠變得非常容易,他只需要改變具體工廠即可使用不同的產品配置。
第二大好處是他讓具體的建立例項過程與客服端分離,客戶端是通過他們的抽象介面操作例項,產品的具體類名也別具體工廠的實現分離,不會出現在客戶端**中。
缺點:此事後需要只能加工功能的時候,比如增加某錶的時候,就是要增加某錶的三個類,還要修改資料庫的三個類,這樣大大增加了工作量!
設計模式 工廠三姐妹
簡單工廠模式 簡單工廠模式是屬於建立型模式,又稱靜態工廠方法模式。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。實質 ...
大話設計模式 比較工廠三姐妹
在沒開始看大話設計模式以為是本小人書呢,當我開始看書的時候發現真的是本小人書,通過生活的一些規律告訴我們各種設計模式,借用英語上的就是思維閃現,每次想到設計模式就能想到小故事,看到小故事就能想起是那個設計模式,所以大話設計模式可是本好書,就是以我的水平看讓人暈頭轉向的,而且在看大話模式的時候出現了三...
設計模式總結1 工廠三姐妹
前言 設計模式的總結已經開始,回想起來自己也有一段時間沒有好好總結了,雖說自考很重要,但若經常因為這種時間分配不均的情況而顧此失彼,這不是我們倡導的學習方法,所以,還要不斷進步啊 今天要總結的,是設計模式中的三個模式 工廠三姐妹 簡單工廠模式 工廠方法模式,和抽象工廠模式。首先我們來看一下三個工廠的...