公(gōng)司新(xīn)聞
公(gōng)司新(xīn)聞

公(gōng)司新(xīn)聞

淺談設計模式的運維優勢(一)

2023-02-20 613

設計模式是一套經過反複使用(yòng)的代碼設計經驗,目的是為(wèi)了重用(yòng)代碼、讓代碼更容易被他(tā)人理(lǐ)解、保證代碼可(kě)靠性。常見設計模式分(fēn)為(wèi)創建型模式、結構型模式、行為(wèi)型模式共二十三種,今天我們重點說一下工(gōng)廠模式。

 

為(wèi)什麽要使用(yòng)工(gōng)廠模式?

為(wèi)什麽要使用(yòng)設計模式衍生到為(wèi)什麽要使用(yòng)工(gōng)廠模式,也可(kě)以說使用(yòng)工(gōng)廠模式來創建實例的優勢。

 

什麽是工(gōng)廠模式?

簡單的說工(gōng)廠模式是我們最常用(yòng)的實例化對象模式了,是用(yòng)工(gōng)廠方法代替new操作(zuò)的一種模式。

 

工(gōng)廠模式分(fēn)為(wèi):簡單工(gōng)廠模式工(gōng)廠方法模式抽象工(gōng)廠模式

 

使用(yòng)工(gōng)廠模式創建對象有(yǒu)什麽優勢?

1:解耦

2:易于維護(減少修改量降低錯誤出現的機率)

*本篇幅主要分(fēn)析如何使用(yòng)工(gōng)廠模式創建對象減少修改量降低錯誤出現的機率

 

定義

修改次數為(wèi)P;應用(yòng)次數為(wèi)N。

 

下面我們以輸出“小(xiǎo)米加步槍戰勝飛機和大炮”來對比工(gōng)廠模式在實際開發中(zhōng)帶來的優勢。

 

 

 

01 New關鍵字創建

 

要輸出“小(xiǎo)米加步槍戰勝飛機和大炮”的組合,一般我們的第一印象是使用(yòng)new關鍵字來創建對象進行組合,下面就叫我們來用(yòng)new關鍵字來實現。

 


 

new關鍵字實現:



對象變更産(chǎn)生的修改情況分(fēn)析

 

對“Xiaomi”對象改為(wèi)“ChianXiaomi”,此時要分(fēn)别對應用(yòng)一和應用(yòng)二中(zhōng)的對象名(míng)進行修改如下:

 


從new關鍵字創建類更改情況可(kě)以看出修改次數為(wèi)4次,即P = (N*2)次。

 

下面我們使用(yòng)工(gōng)廠模式來分(fēn)析修改次數P是多(duō)少

 

 

02 簡單工(gōng)廠模式

 




 

簡單工(gōng)廠實現:


 

對象變更産(chǎn)生的修改情況分(fēn)析

 

對“Xiaomi”對象改為(wèi)“ChianXiaomi”, 此時無需對應用(yòng)一和應用(yòng)二進行修改,隻需對創建Xiaomi對象的工(gōng)廠進行修改即可(kě)。



從普通工(gōng)廠模式對類更改情況可(kě)以看出修改次數為(wèi)1次,即P = 1次。

 

 

 

03 工(gōng)廠方法模式

 


 

工(gōng)廠方法模式實現:


 

對象變更産(chǎn)生的修改情況分(fēn)析

 

對“Xiaomi”對象改為(wèi)“ChianXiaomi”,此時無需對應用(yòng)一和應用(yòng)二進行修改,隻需要對創建Xiaomi對象的工(gōng)廠進行修改即可(kě)。

 


從工(gōng)廠方法模式對類更改情況可(kě)以看出修改次數為(wèi)1次,即P = 1次。

 

 

 

04 抽象工(gōng)廠模式





 

 

抽象工(gōng)廠模式實現:



對象變更産(chǎn)生的修改情況分(fēn)析

 

對“Xiaomi”對象改為(wèi)“ChianXiaomi”,此時無需對應用(yòng)一和應用(yòng)二進行修改,隻需要對創建Xiaomi對象的工(gōng)廠進行修改即可(kě)。

 


從抽象工(gōng)廠模式對類更改情況可(kě)以看出修改次數為(wèi)1次,即P = 1次。

 

把new關鍵字、普通工(gōng)廠模式、工(gōng)廠方法模式和抽象工(gōng)廠模式在2次應用(yòng)的修改情況進行對比

 

修改次數比較:

 


把new關鍵字、普通工(gōng)廠模式、工(gōng)廠方法模式和抽象工(gōng)廠模式在N次應用(yòng)的修改情況進行分(fēn)析得出

 


 

從創建對象實例對比和修改情況分(fēn)析可(kě)以看出,普通工(gōng)廠模式、工(gōng)廠方法模式和抽象工(gōng)廠模式的修改次數與應用(yòng)次數N無關,而new關鍵字修改次數是應用(yòng)次數N的2倍。所以對于應用(yòng)次數N(N>0)修改次數P的大小(xiǎo)依次為(wèi)new關鍵字創建>抽象工(gōng)廠模式=工(gōng)廠方法模式=普通工(gōng)廠模式。

 

對于實際工(gōng)作(zuò)中(zhōng)某個龐大複雜的系統而言,過多(duō)的實例化邏輯于宿主類中(zhōng)會給後期的維護與擴展帶來很(hěn)多(duō)麻煩,所以我們以後在開發過程中(zhōng)如果在遇到new關鍵字創建對象的時候,應該考慮下是否使用(yòng)工(gōng)廠模式來創建對象,以減少代碼的修改量來降低錯誤出現的概率。