溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Javascript實(shí)現(xiàn)建造者模式

發(fā)布時(shí)間:2021-04-26 10:15:52 來源:億速云 閱讀:116 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下如何使用Javascript實(shí)現(xiàn)建造者模式,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

JavaScript有什么特點(diǎn)

1、js屬于一種解釋性腳本語言;2、在絕大多數(shù)瀏覽器的支持下,js可以在多種平臺(tái)下運(yùn)行,擁有著跨平臺(tái)特性;3、js屬于一種弱類型腳本語言,對(duì)使用的數(shù)據(jù)類型未做出嚴(yán)格的要求,能夠進(jìn)行類型轉(zhuǎn)換,簡單又容易上手;4、js語言安全性高,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互,從而有效地防止數(shù)據(jù)的丟失;5、基于對(duì)象的腳本語言,js不僅可以創(chuàng)建對(duì)象,也能使用現(xiàn)有的對(duì)象。

概述

建造者模式是相對(duì)比較簡單的一種設(shè)計(jì)模式,屬于創(chuàng)建型模式的一種;

定義:將一個(gè)復(fù)雜的對(duì)象分解成多個(gè)簡單的對(duì)象來進(jìn)行構(gòu)建,將復(fù)雜的構(gòu)建層與表現(xiàn)層分離,使相同的構(gòu)建過程可以創(chuàng)建不同的表示模式;

優(yōu)點(diǎn):

  • 建造者模式的封裝性比較好,創(chuàng)建對(duì)象和構(gòu)建過程解耦;

  • 建造者模式很容易擴(kuò)展,當(dāng)我們需要擴(kuò)展的時(shí)候,通過一個(gè)新的建造者就可以實(shí)現(xiàn);

模式作用:

  • 分步創(chuàng)建一個(gè)復(fù)雜的對(duì)象

  • 解耦封裝過程和具體創(chuàng)建組件

  • 無需關(guān)心組件如何組裝

注意事項(xiàng):

  • 一定要一個(gè)穩(wěn)定的算法支持  

  • 加工工藝是暴露的,也就是說土豪可以隨時(shí)去看房子建的怎么樣了

白話解釋:

某土豪想建一個(gè)房子,某土豪只需要找包工頭,包工頭再去找施工團(tuán)隊(duì)來建造房子,而不需要土豪自己去一個(gè)個(gè)的找工人搭建施工團(tuán)隊(duì)開始施工;包工頭知道土豪的需求,也知道哪里能找到工人搭建施工團(tuán)隊(duì),工人可以直接干活,中間節(jié)省了土豪直接和工人溝通的成本;土豪不需要知道房子該怎么建,土豪只需要最后能驗(yàn)收到房就行;

代碼實(shí)現(xiàn)

在寫代碼之前我們先分析一下:

1、產(chǎn)出的東西是房子

2、包工頭調(diào)用工人進(jìn)行開工而且他要很清楚工人們具體的某一個(gè)大項(xiàng)

3、工人是蓋房子的工人可以建臥室建客廳建廚房

4、包工頭只是一個(gè)接口,他只對(duì)外說蓋房子,他不用做事情;   

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()里面是具體的施工過程,也就是具體做的事情,F(xiàn)angzi()里面一開始都是空的,沒有客廳、廚房、臥室;Baogongtou()里面只是對(duì)外宣傳可以建房子,然后傳入工人方法調(diào)用工人進(jìn)行施工;工人方法執(zhí)行完了也就是施工完了,然后就是交房;一個(gè)新的方法里面實(shí)例化Fangzi()的方法,在新方法里面重新賦值即可;

看完了這篇文章,相信你對(duì)“如何使用Javascript實(shí)現(xiàn)建造者模式”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI