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