最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

理解JavaScript設(shè)計模式中的建造者模式

 更新時間:2022年04月26日 14:30:57   作者:掘金安東尼  
這篇文章主要介紹了理解JavaScript設(shè)計模式中的建造者模式,文章基于JavaScript的相關(guān)資料展開箱子內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

我們在前面已經(jīng)提過設(shè)計模式創(chuàng)建型模式的 3 種工廠模式 單例模式;本篇帶來同屬創(chuàng)建型模式的“建造者模式”

分分鐘理解建造者模式_建造者

建造者模式(Builder Pattern)使用多個簡單的對象一步一步構(gòu)建成一個復(fù)雜的對象。它提供了一種創(chuàng)建對象的最佳方式。

一個 Builder 類會一步一步構(gòu)造最終的對象。該 Builder 類是獨立于其他對象的。

建造者模式:主要解決在軟件系統(tǒng)中,有時候面臨著"一個復(fù)雜對象"的創(chuàng)建工作,其通常由各個部分的子對象用一定的算法構(gòu)成;由于需求的變化,這個復(fù)雜對象的各個部分經(jīng)常面臨著劇烈的變化,但是將它們組合在一起的算法卻相對穩(wěn)定。

它的優(yōu)點是:

  • 1、建造者獨立,易擴(kuò)展。
  • 2、便于控制細(xì)節(jié)風(fēng)險

缺點: 

  • 1、產(chǎn)品必須有共同點,范圍有限制。
  • 2、如內(nèi)部變化復(fù)雜,會有很多的建造類。

當(dāng)我們需要生成的對象具有復(fù)雜的內(nèi)部結(jié)構(gòu)或需要生成的對象內(nèi)部屬性本身相互依賴時,會借助它來解決問題;

實戰(zhàn)舉例:

比如說,我們要建造一輛車:

function car () {
this.name = '',
this.number = '',
this.wheel = '',
this.engine = ''
}

車由名字、車牌號、輪子、引擎組成;

然后,我們在建造類中分門別類建造他們:

function carBuilder () {
this.nameBuilder = function () {
this.name = '寶馬'
},
this.numberBuilder = function () {
this.number = '88888888'
},
this.wheelBuilder = function () {
this.wheel = '米其林輪胎'
},
this.engineBuilder = function () {
this.engine = 'V8引擎'
},
this.getCar = function () {
var Car = new car()
Car.name = this.name;
Car.number= this.number;
Car.wheel = this.wheel;
Car.engine = this.engine;
return Car;
}
}

然后,再統(tǒng)一指揮來組裝構(gòu)建:

function director () {
this.action = function (builder) {
builder.nameBuilder();
builder.numberBuilder();
builder.wheelBuilder();
builder.engineBuilder();
}
}

var builder = new carBuilder(); // 構(gòu)建類
var director = new director(); // 指揮構(gòu)建
director.action(builder); // 應(yīng)用構(gòu)建
var Car = builder.getCar(); // 創(chuàng)建
console.log(Car);

建造者模式主要用于“分布構(gòu)建一個復(fù)雜的對象”,它很容易進(jìn)行擴(kuò)展。如果有新的需求,通過實現(xiàn)一個新的建造者類就可以完成,并且建造者模式解耦了對象本身與構(gòu)建過程,使得我們不用關(guān)心具體的建造過程。

要注意:與工廠模式的區(qū)別是:建造者模式更加關(guān)注與零件裝配的順序。

到此這篇關(guān)于理解JavaScript設(shè)計模式中的建造者模式的文章就介紹到這了,更多相關(guān)JS建造者模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • uniapp發(fā)送formdata表單請求2種方法(全網(wǎng)最簡單方法)

    uniapp發(fā)送formdata表單請求2種方法(全網(wǎng)最簡單方法)

    這篇文章主要給大家介紹了關(guān)于uniapp發(fā)送formdata表單請求2種方法的相關(guān)資料,本文介紹的方法應(yīng)該是全網(wǎng)最簡單方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • 兩個JavaScript jsFiddle JSBin在線調(diào)試器

    兩個JavaScript jsFiddle JSBin在線調(diào)試器

    這兩個工具都是剛誕生不久,都還在不斷完善中,雖然目前jsFiddle要優(yōu)于JS Bin,但是我還是更看好后者
    2010-03-03
  • 微信小程序?qū)崿F(xiàn)單列下拉菜單效果

    微信小程序?qū)崿F(xiàn)單列下拉菜單效果

    這篇文章主要介紹了微信小程序單列下拉菜單,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • javascript和jquery中cookie的設(shè)置方法

    javascript和jquery中cookie的設(shè)置方法

    Cookie 是瀏覽器訪問服務(wù)器后,服務(wù)器傳給瀏覽器的一段數(shù)據(jù)。瀏覽器需要保存這段數(shù)據(jù),不會輕易刪除(保存在計算機(jī)中)。此后每次瀏覽器訪問該服務(wù)器,都必須帶上這段數(shù)據(jù)。這篇文章主要介紹了javascript和jquery中cookie的設(shè)置方法
    2023-07-07
  • javascript中的window.location.search方法簡介

    javascript中的window.location.search方法簡介

    window.location.search方法是截取當(dāng)前url中“?”后面的字符串,示例如下,感興趣的朋友可以參考下
    2013-09-09
  • 基于JS實現(xiàn)的隨機(jī)數(shù)字抽簽實例

    基于JS實現(xiàn)的隨機(jī)數(shù)字抽簽實例

    本文分享了基于JS實現(xiàn)的隨機(jī)數(shù)字抽簽的實例代碼。小編認(rèn)為具很好的參考價值,感興趣的朋友可以看下
    2016-12-12
  • Webpack打包過程中處理ES6模塊的循環(huán)依賴問題小結(jié)

    Webpack打包過程中處理ES6模塊的循環(huán)依賴問題小結(jié)

    Webpack通過“暫時性引用”特性處理ES6模塊的循環(huán)依賴,即在模塊加載時創(chuàng)建占位符,確保模塊能夠正確加載,本文介紹Webpack打包過程中如何處理ES6模塊的循環(huán)依賴,感興趣的朋友一起看看吧
    2025-02-02
  • js判斷對象是否存在某個屬性的幾種辦法技巧

    js判斷對象是否存在某個屬性的幾種辦法技巧

    這篇文章主要給大家介紹了關(guān)于js判斷對象是否存在某個屬性的幾種辦法技巧,判斷對象中是否有某屬性的常見方式總結(jié),不同的場景要使用不同的方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • js中的循環(huán)方式及各種遍歷的方法

    js中的循環(huán)方式及各種遍歷的方法

    本文主要介紹了js中的循環(huán)方式及各種遍歷的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 淺談JS 數(shù)字和字符串之間相互轉(zhuǎn)化的糾紛

    淺談JS 數(shù)字和字符串之間相互轉(zhuǎn)化的糾紛

    下面小編就為大家?guī)硪黄獪\談JS 數(shù)字和字符串之間相互轉(zhuǎn)化的糾紛。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論

廉江市| 黔西县| 遵义县| 西充县| 古丈县| 德江县| 石屏县| 东海县| 凤翔县| 浦江县| 宁南县| 庆安县| 文昌市| 馆陶县| 南平市| 灵山县| 台江县| 静宁县| 河北区| 彰化市| 大城县| 广宗县| 太原市| 肇东市| 巫溪县| 册亨县| 阿巴嘎旗| 嫩江县| 元阳县| 沂水县| 博兴县| 台州市| 揭西县| 济阳县| 南城县| 双鸭山市| 博白县| 中卫市| 莱芜市| 北海市| 平塘县|