淺談設(shè)計(jì)模式的運(yùn)維優(yōu)勢(shì)(一)
設(shè)計(jì)模式是一套經(jīng)過(guò)反復(fù)使用的代碼設(shè)計(jì)經(jīng)驗(yàn),目的是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。常見(jiàn)設(shè)計(jì)模式分為創(chuàng)建型模式、結(jié)構(gòu)型模式、行為型模式共二十三種,今天我們重點(diǎn)說(shuō)一下工廠模式。
為什么要使用工廠模式?
為什么要使用設(shè)計(jì)模式衍生到為什么要使用工廠模式,也可以說(shuō)使用工廠模式來(lái)創(chuàng)建實(shí)例的優(yōu)勢(shì)。
什么是工廠模式?
簡(jiǎn)單的說(shuō)工廠模式是我們最常用的實(shí)例化對(duì)象模式了,是用工廠方法代替new操作的一種模式。
工廠模式分為:簡(jiǎn)單工廠模式、工廠方法模式和抽象工廠模式。
使用工廠模式創(chuàng)建對(duì)象有什么優(yōu)勢(shì)?
1:解耦
2:易于維護(hù)(減少修改量降低錯(cuò)誤出現(xiàn)的機(jī)率)
*本篇幅主要分析如何使用工廠模式創(chuàng)建對(duì)象減少修改量降低錯(cuò)誤出現(xiàn)的機(jī)率
定義
修改次數(shù)為P;應(yīng)用次數(shù)為N。
下面我們以輸出“小米加步槍戰(zhàn)勝飛機(jī)和大炮”來(lái)對(duì)比工廠模式在實(shí)際開(kāi)發(fā)中帶來(lái)的優(yōu)勢(shì)。
01? ?New關(guān)鍵字創(chuàng)建
要輸出“小米加步槍戰(zhàn)勝飛機(jī)和大炮”的組合,一般我們的第一印象是使用new關(guān)鍵字來(lái)創(chuàng)建對(duì)象進(jìn)行組合,下面就叫我們來(lái)用new關(guān)鍵字來(lái)實(shí)現(xiàn)。


new關(guān)鍵字實(shí)現(xiàn):

對(duì)象變更產(chǎn)生的修改情況分析
對(duì)“Xiaomi”對(duì)象改為“ChianXiaomi”,此時(shí)要分別對(duì)應(yīng)用一和應(yīng)用二中的對(duì)象名進(jìn)行修改如下:

從new關(guān)鍵字創(chuàng)建類更改情況可以看出修改次數(shù)為4次,即P = (N*2)次。
下面我們使用工廠模式來(lái)分析修改次數(shù)P是多少
02? ?簡(jiǎn)單工廠模式


簡(jiǎn)單工廠實(shí)現(xiàn):

對(duì)象變更產(chǎn)生的修改情況分析
對(duì)“Xiaomi”對(duì)象改為“ChianXiaomi”, 此時(shí)無(wú)需對(duì)應(yīng)用一和應(yīng)用二進(jìn)行修改,只需對(duì)創(chuàng)建Xiaomi對(duì)象的工廠進(jìn)行修改即可。

從普通工廠模式對(duì)類更改情況可以看出修改次數(shù)為1次,即P = 1次。
03? ?工廠方法模式

工廠方法模式實(shí)現(xiàn):

對(duì)象變更產(chǎn)生的修改情況分析
對(duì)“Xiaomi”對(duì)象改為“ChianXiaomi”,此時(shí)無(wú)需對(duì)應(yīng)用一和應(yīng)用二進(jìn)行修改,只需要對(duì)創(chuàng)建Xiaomi對(duì)象的工廠進(jìn)行修改即可。

從工廠方法模式對(duì)類更改情況可以看出修改次數(shù)為1次,即P = 1次。
04? ?抽象工廠模式


抽象工廠模式實(shí)現(xiàn):

對(duì)象變更產(chǎn)生的修改情況分析
對(duì)“Xiaomi”對(duì)象改為“ChianXiaomi”,此時(shí)無(wú)需對(duì)應(yīng)用一和應(yīng)用二進(jìn)行修改,只需要對(duì)創(chuàng)建Xiaomi對(duì)象的工廠進(jìn)行修改即可。

從抽象工廠模式對(duì)類更改情況可以看出修改次數(shù)為1次,即P = 1次。
把new關(guān)鍵字、普通工廠模式、工廠方法模式和抽象工廠模式在2次應(yīng)用的修改情況進(jìn)行對(duì)比
修改次數(shù)比較:

把new關(guān)鍵字、普通工廠模式、工廠方法模式和抽象工廠模式在N次應(yīng)用的修改情況進(jìn)行分析得出

從創(chuàng)建對(duì)象實(shí)例對(duì)比和修改情況分析可以看出,普通工廠模式、工廠方法模式和抽象工廠模式的修改次數(shù)與應(yīng)用次數(shù)N無(wú)關(guān),而new關(guān)鍵字修改次數(shù)是應(yīng)用次數(shù)N的2倍。所以對(duì)于應(yīng)用次數(shù)N(N>0)修改次數(shù)P的大小依次為new關(guān)鍵字創(chuàng)建>抽象工廠模式=工廠方法模式=普通工廠模式。
對(duì)于實(shí)際工作中某個(gè)龐大復(fù)雜的系統(tǒng)而言,過(guò)多的實(shí)例化邏輯于宿主類中會(huì)給后期的維護(hù)與擴(kuò)展帶來(lái)很多麻煩,所以我們以后在開(kāi)發(fā)過(guò)程中如果在遇到new關(guān)鍵字創(chuàng)建對(duì)象的時(shí)候,應(yīng)該考慮下是否使用工廠模式來(lái)創(chuàng)建對(duì)象,以減少代碼的修改量來(lái)降低錯(cuò)誤出現(xiàn)的概率。