設計模式是一套經過反復使用的代碼設計經驗,目的是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。常見設計模式分為創建型模式、結構型模式、行為型模式共二十三種,今天我們重點說一下工廠模式。
為什么要使用工廠模式?
為什么要使用設計模式衍生到為什么要使用工廠模式,也可以說使用工廠模式來創建實例的優勢。
什么是工廠模式?
簡單的說工廠模式是我們最常用的實例化對象模式了,是用工廠方法代替new操作的一種模式。
工廠模式分為:簡單工廠模式、工廠方法模式和抽象工廠模式。
使用工廠模式創建對象有什么優勢?
1:解耦
2:易于維護(減少修改量降低錯誤出現的機率)
*本篇幅主要分析如何使用工廠模式創建對象減少修改量降低錯誤出現的機率
定義
修改次數為P;應用次數為N。
下面我們以輸出“小米加步槍戰勝飛機和大炮”來對比工廠模式在實際開發中帶來的優勢。
01 New關鍵字創建
要輸出“小米加步槍戰勝飛機和大炮”的組合,一般我們的第一印象是使用new關鍵字來創建對象進行組合,下面就叫我們來用new關鍵字來實現。
new關鍵字實現:
對象變更產生的修改情況分析
對“Xiaomi”對象改為“ChianXiaomi”,此時要分別對應用一和應用二中的對象名進行修改如下:
從new關鍵字創建類更改情況可以看出修改次數為4次,即P = (N*2)次。
下面我們使用工廠模式來分析修改次數P是多少
02 簡單工廠模式
簡單工廠實現:
對象變更產生的修改情況分析
對“Xiaomi”對象改為“ChianXiaomi”, 此時無需對應用一和應用二進行修改,只需對創建Xiaomi對象的工廠進行修改即可。
從普通工廠模式對類更改情況可以看出修改次數為1次,即P = 1次。
03 工廠方法模式
工廠方法模式實現:
對象變更產生的修改情況分析
對“Xiaomi”對象改為“ChianXiaomi”,此時無需對應用一和應用二進行修改,只需要對創建Xiaomi對象的工廠進行修改即可。
從工廠方法模式對類更改情況可以看出修改次數為1次,即P = 1次。
04 抽象工廠模式
抽象工廠模式實現:
對象變更產生的修改情況分析
對“Xiaomi”對象改為“ChianXiaomi”,此時無需對應用一和應用二進行修改,只需要對創建Xiaomi對象的工廠進行修改即可。
從抽象工廠模式對類更改情況可以看出修改次數為1次,即P = 1次。
把new關鍵字、普通工廠模式、工廠方法模式和抽象工廠模式在2次應用的修改情況進行對比
修改次數比較:
把new關鍵字、普通工廠模式、工廠方法模式和抽象工廠模式在N次應用的修改情況進行分析得出
從創建對象實例對比和修改情況分析可以看出,普通工廠模式、工廠方法模式和抽象工廠模式的修改次數與應用次數N無關,而new關鍵字修改次數是應用次數N的2倍。所以對于應用次數N(N>0)修改次數P的大小依次為new關鍵字創建>抽象工廠模式=工廠方法模式=普通工廠模式。
對于實際工作中某個龐大復雜的系統而言,過多的實例化邏輯于宿主類中會給后期的維護與擴展帶來很多麻煩,所以我們以后在開發過程中如果在遇到new關鍵字創建對象的時候,應該考慮下是否使用工廠模式來創建對象,以減少代碼的修改量來降低錯誤出現的概率。