1. 程式人生 > >建立型模式——簡單工廠模式(Simple Factory Pattern)

建立型模式——簡單工廠模式(Simple Factory Pattern)

開頭

  我們可以將設計模式分為三大類,分別為建立型模式、結構型模式、行為型模式,每種模式有著各自的特點。

  建立型模式——它是用來描述如何建立物件的。

  思維導圖


建立型模型分類

建立型模式又分為簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、原型模式、建造者模式。

簡單工廠模式

簡單工廠模式提供了專門的工廠類用於建立物件,將物件的建立和使用分離開。

例子一:我們知道過年都需要做鞭炮,我父輩就是我爸爸那個年代的人們,小時後放炮自己買紙,買火藥自己製作炮仗(流程很複雜),然後過年的時候放就可以了。可見他們小時後放炮分為兩個步驟:1、制炮(建立物件)  2、放炮(使用物件)。 到了現在我們從煙花廠拿來鞭炮,然後放就可以了。煙花廠就好比工廠,我們不需要知道炮是如何製造出來的,只知道如何放就可以了。

例子二:我小時候喜歡吃月餅每年八月十五我們那裡都要做月餅,小時後跟著家裡人工廠做月餅,工廠裡面的人說,你給我多少面,多少糖,多少油就可以了,然後就靜靜等著工廠給我們拿出來的月餅,整個過程我們就提供類一個原材料,然後吃就可以了,至於糖、油、面以怎樣的比例組合,我們並不關心。

  我們試想整個做月餅的過程來分析一下工廠的有缺點。

  優點:工廠做月餅(建立物件)和佳興吃月餅(使用物件)我們分離開了,我就知道吃,我想是什麼種類的月餅,我就給你提供材料,然後等著吃就可以了。可見客戶端的我什麼都沒有改變,只需要使用就可以。

  缺點:我今天想吃花生味的、明天想吃草莓味的,後天又想吃奶油味的,隨著我的需求增多,工廠需要創建制造不同種類的月餅和製作月餅的模具,導致工廠業務邏輯更加複雜,不利於整個工廠的維護。

優點:使用者不用直接建立物件(制炮),只需要消費使用物件就可以了(放炮)。實現了將物件的建立和使用分離。

          客戶端不需要改動任何程式碼的情況下更換或者增加新的具體產品,提高了系統的靈活性。

缺點:如果工廠的業務過多,導致職責過重,業務邏輯複雜,不利於系統擴充套件和維護,使系統受到影響。

適用範圍:工廠負責建立的物件少,業務簡單。客戶端只需要傳入工廠類引數,不需要關心物件是如何建立的。

計算器簡單工廠模式

程式碼圖片:


客戶端程式碼:


簡單工廠最大的有點就是將物件的建立和是使用完全分離開來,可以也有它的缺點,一旦增加新的產品和功能就需要修改簡單工廠的方法,(破壞了封裝性)使得簡單工廠的實現邏輯變得複雜,如何避免這個缺點呢?解決方法:下一篇的分享——工廠方法模式。