簡單工廠模式,工廠方法模式,抽象工廠模式的區別

簡單工廠中只有一個工廠,該工廠有一個建立產品的方法。根據傳入參數不一樣,返回不一樣產品。設計模式

舉個例子:一個電視機工廠,根據客戶的須要,生產海爾電視機,三星電視機。設計

若是要新增一個產品,須要修改建立產品的方法。若是產品種類太多,代碼會顯得很笨重,不易維護。違背了開放-封閉原則。產品

工廠方法模式是對簡單工廠的升級,將工廠抽象出來,工廠基類定義建立產品的方法。每一個工廠都須要實現該方法。每一個產品對應一個工廠,一個工廠只生產對應產品。擴展

舉個例子:只要是工廠都要能生產電視機。海爾工廠生產海爾電視機,三星工廠生產三星電視機。方法

若是要新增一個產品,只須要新增對應的工廠和方法便可。遵循了開放-封閉原則。可是每新增一個產品都須要新增對應的工廠。升級

抽象工廠模式是對工廠方法模式的升級。工廠基類除了定義建立電視機方法,還定義了建立微波爐的方法。工廠模式

舉個例子:只要是工廠都要能生產電視機和微波爐。海爾工廠生產海爾電視機,海爾微波爐。三星工廠生產三星電視機,三星微波爐。參數

若是要新增一個產品,也只須要新增對應的工廠和方法便可。這個層面上遵循了開放-封閉原則。

可是若是須要對工廠基類進行擴展,實現生產冰箱的話。則須要對各個工廠都進行修改。

三個設計模式各有利弊,須要根據場景進行使用。簡單工廠用於生產少許的產品,等產品數量到了必定規模能夠考慮使用工廠方法替代。工廠方法以後也能夠升級爲抽象工廠模式。

相關文章
相關標籤/搜索