【設計模式一】工廠模式

工廠模式分爲:簡單工廠模式、工廠方法模式、抽象工廠模式

簡單工廠模式

核心思想:用一個工廠類根據不同的輸入條件new出不同的派生類指針,然後利用多態的特性調用不同派生類中virtual函數,得到不同的結果

 

 

結語:他真的很簡單,以上所有的判斷處理都在工廠類中完成,通過CreateFactory函數,根據不同的類型new 出派生類指針,返回基類指針。這個設計的好處是足夠簡單,你給什麼樣的輸入,我給什麼樣的輸出。壞處是,工廠的職能太單一,假如我的產品有很多那麼判斷入參的分支也會很多,這樣代碼不夠美觀,耦合度高,且無法定製具有差異性的子類。

 

工廠方法模式(Factory Methold)

核心思想:工廠方法模式的思想是定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類當中。不同類型的產品由不同的子工廠來創建,核心工廠類則不再負責產品的創建。這樣核心類成爲一個抽象的工廠角色,僅負責定義子類必須實現的接口。這樣進一步抽象化的好處是系統在不修改核心工廠功能(實現)的情況下引進新的產品。

 

結語:工廠方法模式類比爲現實中廠區的擴建,原先實力小,所有產品都在一個工廠中創建,現在掙了錢規廠區擴建,所有的工廠都按照初始的(核心)工廠的模子構建,但不同廠生產的產品就不一樣了。客戶訂單下到總廠,總廠根據訂單需求下單到子廠生產產品。設計思路上,工廠方法模式將工廠真正的抽象出來,與簡單工廠相比,修正了簡單工廠模式中不遵循“開放-封閉”原則,例如添加新產品時仍需要修改工廠基類內容。

 

抽象工廠模式(Abstruct Factory)

核心思想:抽象工廠與工廠方法模式基本一致,只是工廠不再用於創建單個的產品,而是每個工廠負責創建一個系列的產品。

結語:如果說工廠方法模式是對簡單工廠模式的一個縱向抽象擴展,那麼抽像工廠模式就是在工廠方法模式基礎上的一個橫向抽象擴展。

簡單工廠模式完全不遵循開閉原則,並且是面向類編程,而不是面向接口編程,違背了依賴倒轉原則;工廠方法模式將“工廠”抽象化,在一定程度上進行了解耦,使得不同的工廠能夠生產不同的產品;抽象工廠模式則完全將工廠和產品抽象化,使得工廠不參與產品的設計,當產品修改時,只要修改產品的特性就可以,工廠完全不用有任何改變,達到了完全解耦的目的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章