怎樣用Javascript實(shí)現(xiàn)建造者模式
建造者模式是相對(duì)比較簡(jiǎn)單的一種設(shè)計(jì)模式,屬于創(chuàng)建型模式的一種;
定義:將一個(gè)復(fù)雜的對(duì)象分解成多個(gè)簡(jiǎn)單的對(duì)象來(lái)進(jìn)行構(gòu)建,將復(fù)雜的構(gòu)建層與表現(xiàn)層分離,使相同的構(gòu)建過(guò)程可以創(chuàng)建不同的表示模式;
優(yōu)點(diǎn):
建造者模式的封裝性比較好,創(chuàng)建對(duì)象和構(gòu)建過(guò)程解耦; 建造者模式很容易擴(kuò)展,當(dāng)我們需要擴(kuò)展的時(shí)候,通過(guò)一個(gè)新的建造者就可以實(shí)現(xiàn);模式作用:
分步創(chuàng)建一個(gè)復(fù)雜的對(duì)象 解耦封裝過(guò)程和具體創(chuàng)建組件 無(wú)需關(guān)心組件如何組裝注意事項(xiàng):
一定要一個(gè)穩(wěn)定的算法支持 加工工藝是暴露的,也就是說(shuō)土豪可以隨時(shí)去看房子建的怎么樣了白話解釋:
某土豪想建一個(gè)房子,某土豪只需要找包工頭,包工頭再去找施工團(tuán)隊(duì)來(lái)建造房子,而不需要土豪自己去一個(gè)個(gè)的找工人搭建施工團(tuán)隊(duì)開(kāi)始施工;包工頭知道土豪的需求,也知道哪里能找到工人搭建施工團(tuán)隊(duì),工人可以直接干活,中間節(jié)省了土豪直接和工人溝通的成本;土豪不需要知道房子該怎么建,土豪只需要最后能驗(yàn)收到房就行;
代碼實(shí)現(xiàn)在寫代碼之前我們先分析一下:
1、產(chǎn)出的東西是房子
2、包工頭調(diào)用工人進(jìn)行開(kāi)工而且他要很清楚工人們具體的某一個(gè)大項(xiàng)
3、工人是蓋房子的工人可以建臥室建客廳建廚房
4、包工頭只是一個(gè)接口,他只對(duì)外說(shuō)蓋房子,他不用做事情;
function Fangzi(){ this.woshi = ''; this.keting = ''; this.chufang = '';}function Baogongtou(){ this.jianfangzi = function(gongren){gongren.jian_woshi();gongren.jian_keting();gongren.jian_chufang(); }}function Gongren(){ this.jian_woshi = function(){console.log('臥室建好了!'); } this.jian_keting = function(){console.log('客廳建好了!'); } this.jian_chufang = function(){console.log('廚房建好了!'); } this.wangong = function(){var fangzi = new Fangzi();fangzi.woshi = 'ok';fangzi.keting = 'ok';fangzi.chufang = 'ok';return fangzi; }}let gongren = new Gongren();let baogongtou = new Baogongtou();//臥室建好了!//客廳建好了!//廚房建好了!baogongtou.jianfangzi(gongren);var my_fangzi = gongren.wangong();/*Fangzi={ chufang: 'ok' keting: 'ok' woshi: 'ok' }*/console.log(my_fangzi);
上述代碼中我們可以看到,Gongren()里面是具體的施工過(guò)程,也就是具體做的事情,F(xiàn)angzi()里面一開(kāi)始都是空的,沒(méi)有客廳、廚房、臥室;Baogongtou()里面只是對(duì)外宣傳可以建房子,然后傳入工人方法調(diào)用工人進(jìn)行施工;工人方法執(zhí)行完了也就是施工完了,然后就是交房;一個(gè)新的方法里面實(shí)例化Fangzi()的方法,在新方法里面重新賦值即可;
以上就是怎樣用Javascript實(shí)現(xiàn)建造者模式的詳細(xì)內(nèi)容,更多關(guān)于Javascript建造者模式的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. ASP動(dòng)態(tài)網(wǎng)頁(yè)制作技術(shù)經(jīng)驗(yàn)分享2. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法3. ASP中if語(yǔ)句、select 、while循環(huán)的使用方法4. xml中的空格之完全解說(shuō)5. WMLScript的語(yǔ)法基礎(chǔ)6. 匹配模式 - XSL教程 - 47. XML入門的常見(jiàn)問(wèn)題(四)8. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問(wèn)題……9. html小技巧之td,div標(biāo)簽里內(nèi)容不換行10. 解決ASP中http狀態(tài)跳轉(zhuǎn)返回錯(cuò)誤頁(yè)的問(wèn)題
