淺談簡單工廠模式

一.爲何提出簡單工廠模式git

考慮一個簡單的軟件應用場景,一個生產月餅的工廠要生產不一樣類型的月餅(豆沙的,肉餡的,核桃餡的),如今咱們經過」訂單「就能夠生產不一樣類型的月餅,這種應用場景反映到程序上就可使用簡單工廠模式。github

二.簡單工廠模式的定義spa

簡單工廠模式(Simple Factory Pattern):又稱爲靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式。在簡單工廠模式中,能夠根據參數的不一樣返回不一樣類的實例。簡單工廠模式專門定義一個類來負責建立其餘類的實例,被建立的實例一般都具備共同的父類。對象

三.模式結構繼承

簡單工廠通常包含三個角色:接口

Factory:工廠角色開發

工廠角色負責實現建立全部實例的內部邏輯get

Product:抽象產品角色產品

抽象產品角色是所建立的全部對象的父類,負責描述全部實例所共有的公共接口,抽象產品角色通常是一個接口或者抽象類。it

ConcreteProduct:具體產品角色

具體產品角色是建立目標,全部建立的對象都充當這個角色的某個具體類的實例。

四.模式分析

1.將對象的建立和對象自己業務處理分離能夠下降系統的耦合度,使得二者修改起來都相對容易。

2.在調用工廠類的工廠方法時,因爲工廠方法是靜態方法,使用起來很方便,可經過類名直接調用,並且只須要傳入一個簡單的參數便可,在實際開發中,還能夠在調用時將所傳入的參數保存在XML等格式的配置文件中,修改參數時無須修改任何源代碼。

3.簡單工廠模式最大的問題在於工廠類的職責相對太重,增長新的產品須要修改工廠類的判斷邏輯,這一點與開閉原則是相違背的(這一點能夠運用反射獲得改善)。

4.簡單工廠模式的要點在於:當你須要什麼,只須要傳入一個正確的參數,就能夠獲取你所須要的對象,而無須知道其建立細節。

五.簡單工廠的優勢

1.工廠類含有必要的判斷邏輯,能夠決定在何時建立哪個產品類的實例,客戶端能夠免除直接建立產品對象的責任,而僅僅「消費」產品;簡單工廠模式經過這種作法實現了對責任的分割,它提供了專門的工廠類用於建立對象。

2.客戶端無須知道所建立的具體產品類的類名,只須要知道具體產品類所對應的參數便可,對於一些複雜的類名,經過簡單工廠模式能夠減小使用者的記憶量。

3.經過引入配置文件,能夠在不修改任何客戶端代碼的狀況下更換和增長新的具體產品類,在必定程度上提升了系統的靈活性。

六.簡單工廠的缺點

1.因爲工廠類集中了全部產品建立邏輯,一旦不能正常工做,整個系統都要受到影響。

2.使用簡單工廠模式將會增長系統中類的個數,在必定程序上增長了系統的複雜度和理解難度。

3.系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,在產品類型較多時,有可能形成工廠邏輯過於複雜,不利於系統的擴展和維護。

4.簡單工廠模式因爲使用了靜態工廠方法,形成工廠角色沒法造成基於繼承的等級結構。

七.簡單工廠實例

 https://github.com/Artist00710/StaticFactory

相關文章
相關標籤/搜索