設計模式中第乙個接觸的模式就是簡單工廠模式,簡單工廠也並不簡單,相對我們之前面向過程的程式設計而言,簡單工廠模式已經是從面相過程向物件導向的乙個飛躍。但是簡單工廠也有她的不足,便是她並不符合開放—封閉的原則。緊接著就有了工廠方法模式,工廠方法是對簡單工廠的繼承與改進,將簡單工廠類改進優化成抽象的工廠類與具體的工廠類。抽象工廠模式對工廠方法模式作了更進一步的優化。
簡單工廠解決的就是如何例項化物件的問題,對於一些很容易變化的地方,就可以考慮用乙個單獨的類來做這個創造實力的過程。
優點:工廠類中包含了必要的邏輯判斷,根據客戶端的選擇動態的例項化相關的類,對於客戶端來說去除了與具體產品的依賴。
抽象的語言總是難以理解,下面就通過具體的例項來更深刻的領會簡單工廠模式的好處。
用簡單工廠模式實現計算器的功能時,各個類的示例圖如下:
工廠類的具體實現**:
public class operationfactory
return oper;
}}
通過圖示和**可以看出,如果想要增加或刪除某乙個運算方法,就必須改變工廠類。
然而正是因為她的優點,也暴露了不足的地方:把邏輯判斷放在工廠類中,如果想要再增加、刪除、修改邏輯判斷,就不得不修改工廠類,這就違背了開放—擴充套件原則。
定義:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,使乙個類的例項化延遲到子類。
通過工廠方法來實現上面計算器的例子:
不難看出,工廠類下面增加了加法、減法等具體的工廠,這樣增加新的運算時只需要擴充套件工廠類就可以。這樣也將例項化的過程延遲到了子類。
工廠模式結構圖:
定義:提供乙個建立一系列相關或相互依賴物件的介面,而無需指定他們具體的類。
結構圖:
優點:1.易於交換產品系列,由於具體工廠類在乙個應用中只需要在初始化時出現一次,這就使得改變乙個應用的具體工廠變得非常容易,它只需要改變具體工廠即可使用不同的產品配置。
2.它讓具體的建立例項過程與客戶端分離,客戶端通過他們的抽象介面操縱例項,產品的具體類名也被具體工廠的實現分離,不會出現在客戶**中。
設計模式 工廠三姐妹
工廠三姐妹,指的就是簡單工廠模式,工廠方法模式,和抽象工廠模式。他們三個都屬於建立型模型,主要用於描述如何建立物件。這三個姐妹之間有相似的地方,也有很多不同的地方,下面讓我們來具體看看他們的介紹和區別吧。簡單工廠模式 factory pattern 定義乙個工廠類,它可以根據引數的不同返回不同類的例...
設計模式 工廠三姐妹
簡單工廠模式 簡單工廠模式是屬於建立型模式,又稱靜態工廠方法模式。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。實質 ...
設計模式之工廠三姐妹解讀(三)
解讀工廠三姐妹 三 現在我們來說一下,工廠三姐妹中的公主吧!就是老三 抽象工廠模式啦!想信通過我們說了這麼多大家一定對設計模式感興趣了,對工廠三姐妹的老大老二也有了一些比較清晰的認識了。老規矩啦,先來一波定義所謂的抽象工廠模式 提供建立一系列相關或者相互依賴物件的介面,而無需指定具體的類。好像看起來...