角色建造者故名思想,就是建房子的人,是來自建筑工程領(lǐng)域的的概念,其中包含三種主要角色:
定義建造者模式是將一個復(fù)雜的對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。創(chuàng)建者模式隱藏了復(fù)雜對象的創(chuàng)建過程,它把復(fù)雜對象的創(chuàng)建過程加以抽象,通過子類繼承或者重載的方式,動態(tài)的創(chuàng)建復(fù)雜的、具有復(fù)合屬性的對象。 案例下面將通過一個小案例來解釋說明什么建造者模式。 簡化需求假設(shè)需要制造一個手機(jī),手機(jī)包括CPU,內(nèi)存,屏幕等幾個部分,而CPU,內(nèi)存,屏幕配置不同又有高端,低端之分。要求手機(jī)配置可以靈活搭配。 初始版UML該版本直接在在需要的時候通過 優(yōu)點簡單,并且配置可靈活搭配 缺點
工廠方法改造基于上述原因,我們通過工廠方法改造,屏蔽具體配件的創(chuàng)建細(xì)節(jié)。 優(yōu)點
缺點
抽象工廠+簡單工廠改造為了解決類爆炸的問題,我們合并配件工廠類,由一個抽象工廠創(chuàng)建相關(guān)配件,再由簡單工廠組裝生產(chǎn)手機(jī)成品。 簡化UML(標(biāo)準(zhǔn)版本)由于無論是CPU、內(nèi)存還是屏幕都屬于手機(jī)的一部分,因此整個產(chǎn)品還是手機(jī)本身,由此,可簡化上述UML圖,并抽象得到下圖: 優(yōu)點
缺點
進(jìn)一步簡化很多場景中并沒有指揮者,或者說指揮者就是建造者本身,因此,建造者模式可進(jìn)一步簡化為如下結(jié)構(gòu): 再進(jìn)一步改造同樣的,大多數(shù)情況一個建造者只會有一個實現(xiàn)子類,因此,還可用進(jìn)一步簡化,這樣可以使用委托對需要建造的對象進(jìn)行靈活的配置。 簡化UML(簡化版本,最常用)優(yōu)點簡單,靈活,代碼優(yōu)雅 缺點用戶使用成本相對較高,需要使用者自己配置內(nèi)部參數(shù)。 總結(jié)建造者模式通常用于動態(tài)的創(chuàng)建復(fù)雜的、具有復(fù)合屬性的對象。在.Net Core也存在大量的建造者模式的使用,例如, |
|