這兩天在看《大話設計模式》,這本書很有意思,容易讓人理解,但是看久了,設計模式種類看多了,也會容易混,容易記不清楚,所以我們應該過一段時間停下腳步,總結一下。幫助我們理解,記憶。------常常駐足進行總結,顆粒歸倉才是我們的收穫。
最近看到了簡單工廠模式和工廠方法模式,從名字上看這麼的相似,越相似月不容易找到他們的區別,今天就來介紹他們的區別。
簡單工程模式:它的工廠類一般使用靜態方法,通過接收的引數的不同來返回不同的物件例項,不修改**的話,是無法擴充套件的。最大的有點就是工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說除去了具體產品的依賴。看它的結構圖:
工廠方法模式:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使乙個類的例項化延遲到其子類。在同一等級結構中支援增加任意產品。下面是它的結構圖:
通過例項來看他們的區別:
//簡單工廠類
class ******factary
return result;}}
工廠方法模式://雷鋒工廠
inte***ce ifactory
//學雷鋒的大學生工廠
class undergraduatefactory:ifactory
}
//社群志願工廠
class voluntee***ctory:ifactory
}
簡單工廠中工廠類中包含了必要的邏輯判斷,如果想要增加新的產品(比如教師志願者)就要修改**去進行新增才能實現,這樣就大大違背了開放-封閉原則,不利於擴充套件。而工廠方法模式克服了這一缺點,如果想要在增加乙個產品直接再增加乙個產品工廠類就行了,有利於擴充套件,不影響其他的類。
區別總結:
簡單工廠模式:用來生產同一等級結構中的任意產品,但是對於增加新的產品無能為力(不利於擴充套件)。不會增加額外的開發量,適合於中小型專案。
工廠方法模式:用來生產同一登記結構中的固定產品,支援增加新的產品,有利於擴充套件。由於每增加乙個產品增加了額外的開發量,適合於大型專案。
簡單工廠模式VS工廠方法模式
前面學習了簡單工廠模式,理解的不是很深刻,今天剛好看到了工廠方法模式,比較一下也加深對前面的理解。首先無論是簡單工廠模式還是工廠方法模式都是把不變的地方提取出來,把容易發生變化的封裝起來。以達到做大程度的復用,和適應使用者的變動,以及專案的擴充套件。又稱為靜態工廠模式,它專門定義乙個類來負責建立其他...
工廠方法模式 VS 簡單工廠模式
這片部落格我將以乙個計算器的例子跟大家分享一下我對簡單工廠模式和工廠方法模式的理解。計算器中的基本運算有 加 減 乘 除四個。首先定義乙個運算類,類中有numa和numb這兩個需要運算的變數,有乙個getresult方法用於獲取運算結果。public class operation 其次,定義加 減...
工廠方法模式VS簡單工廠
通過聯絡實際,我們利用乙個學雷鋒做好事的例子,來體會工廠方法模式和簡單工廠的區別與聯絡。1 寫乙個雷鋒類,學生繼承於雷鋒,通過例項化多個物件去完成洗衣 打掃等方法。2 但是學生都是短期的,如若我們需要增加乙個長時間為老人服務的團體 社群志願者類,同樣繼承於雷鋒。再寫出簡單工廠類,運用多型,需要社群志...