java 创建者设计模式_Java设计模式之创建者模式分享热爱编程,程序人生
PS:今天的23中設(shè)計(jì)模式中的創(chuàng)建者方式,至此告一段落。我今天帶來(lái)的技術(shù)分享為創(chuàng)建者模式以及原型模式。當(dāng)然在Java中這兩種方式很常見(jiàn),只不過(guò)我們寫(xiě)的次數(shù)確實(shí)有點(diǎn)低而已,但是這不是我不學(xué)它的借口!!!
創(chuàng)建者模式
無(wú)構(gòu)建者模式代碼示例:需求創(chuàng)建一個(gè)摩托車(chē)對(duì)象 并且使其開(kāi)始運(yùn)行。
發(fā)動(dòng)機(jī)代碼構(gòu)建:
發(fā)動(dòng)機(jī)代碼構(gòu)鍵
車(chē)架代碼實(shí)例:
車(chē)架代碼實(shí)例
輪胎機(jī)代碼示例:
輪胎機(jī)代碼示
摩托車(chē)對(duì)象實(shí)體類:
摩托車(chē)對(duì)象實(shí)體類
測(cè)試類:
測(cè)試類
總結(jié):摩托車(chē)對(duì)象時(shí)一個(gè)大對(duì)象:構(gòu)建過(guò)程中可能需要很多其他對(duì)象的使用,比如:車(chē)架、發(fā)動(dòng)機(jī)、輪胎 所以如果每次摩托車(chē)對(duì)象的創(chuàng)建,都需要其他對(duì)象 并且調(diào)用者都需要知道摩托車(chē)的具體細(xì)節(jié),這樣對(duì)于調(diào) 用者來(lái)說(shuō)是很痛苦的。所以在這個(gè)基礎(chǔ)之上,我們希望 是否可以將調(diào)用者和創(chuàng)建者進(jìn)行解耦。
作用:
當(dāng)一個(gè)類的內(nèi)部數(shù)據(jù)過(guò)于復(fù)雜的時(shí)候(通常是負(fù)責(zé)持有數(shù)據(jù)的類,比如Config、VO、PO、Entity...),要?jiǎng)?chuàng)建的話可能就需要了解這個(gè)類的內(nèi)部結(jié)構(gòu),還有這些東西是怎么組織裝配等一大坨亂七八糟的東西,這個(gè)時(shí)候就會(huì)增加學(xué)習(xí)成本而且會(huì)很混亂,這個(gè)時(shí)候就想啊想一種什么法子來(lái)管理一下這個(gè)類中的數(shù)據(jù)呢,怎么在創(chuàng)建的時(shí)候讓它按部就班的來(lái),并且代碼可讀性很好別讓我看花了眼啊,我要的東西也能都很好設(shè)置進(jìn)來(lái),這就是Builder模式的應(yīng)用場(chǎng)景,Builder模式可以將一個(gè)類的構(gòu)建和表示進(jìn)行分離。
常見(jiàn)的使用場(chǎng)景:構(gòu)建比較復(fù)雜的產(chǎn)品。
StringBuilder DomBuilder SaxBuilder
Sql中的PreparedStatement
構(gòu)建者類圖總結(jié)
類圖總結(jié)
總結(jié):以上,調(diào)用者無(wú)需知道具體的構(gòu)建者中的具體構(gòu)建順序,調(diào)用者專注于自己的業(yè)務(wù)即可。實(shí)現(xiàn)了解耦。但是這里最重要的就是構(gòu)建順序,不同的builder’可以構(gòu)建不同的實(shí)例對(duì)象
案例測(cè)試:需求構(gòu)建一個(gè)對(duì)應(yīng)品牌的手機(jī)對(duì)象。調(diào)用者無(wú)需知道具體的對(duì)象的調(diào)用細(xì)則。
手機(jī)實(shí)體類構(gòu)建代碼:
實(shí)體手機(jī)類
構(gòu)建者接口以及對(duì)應(yīng)實(shí)現(xiàn) :
構(gòu)建者接口以及對(duì)應(yīng)實(shí)現(xiàn)
裝配接口以及對(duì)應(yīng)實(shí)現(xiàn):
裝配接口以及對(duì)應(yīng)實(shí)現(xiàn)
測(cè)試類:
測(cè)試類
總結(jié):以及需工廠的區(qū)別
a、將一個(gè)對(duì)象底層的依賴 全部交由builder執(zhí)行,具體的建造順序,由builder指定。然后由director負(fù)責(zé)完成裝配過(guò)程。調(diào)用者無(wú)需知道底層的具體順序以及裝配過(guò)程。如果不滿足需要?jiǎng)t直接重新創(chuàng)建builder,完成具體的建造順序
b、建造者模式關(guān)注與對(duì)象創(chuàng)建的具體過(guò)程,而工廠則關(guān)注于最后創(chuàng)建對(duì)象的結(jié)果。
c、如果構(gòu)建出來(lái)的對(duì)象差異較大,需要多個(gè)構(gòu)建者才能完成。所以會(huì)借助到單例或者工廠一起使用。
拓展:
需求,構(gòu)建類似于一個(gè)對(duì)象,但是對(duì)象構(gòu)建時(shí),屬性很多。有可能忘記屬性,或者屬性沒(méi)寫(xiě)全。那么當(dāng)前這個(gè)對(duì)象就無(wú)法創(chuàng)建,通過(guò)創(chuàng)建者模式解決問(wèn)題。
實(shí)現(xiàn)代碼:
實(shí)現(xiàn)代碼
測(cè)試類:
測(cè)試類
PS:大家有什么想要分享的內(nèi)容!可以在評(píng)論下方留言!!!
更多行業(yè)資訊請(qǐng)關(guān)注:百戰(zhàn)程序員,喜歡請(qǐng)分享轉(zhuǎn)發(fā)
總結(jié)
以上是生活随笔為你收集整理的java 创建者设计模式_Java设计模式之创建者模式分享热爱编程,程序人生的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 实例1:python(续)
- 下一篇: Ubuntu 和 Centos 的一点差