亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

理解JavaScript設計模式中的建造者模式

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

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

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

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

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

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

它的優(yōu)點是:

  • 1、建造者獨立,易擴展。
  • 2、便于控制細節(jié)風險

缺點: 

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

當我們需要生成的對象具有復雜的內(nèi)部結構或需要生成的對象內(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)一指揮來組裝構建:

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

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

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

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

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

相關文章

  • Bootstrap導航條可點擊和鼠標懸停顯示下拉菜單

    Bootstrap導航條可點擊和鼠標懸停顯示下拉菜單

    這篇文章主要為大家詳細介紹了Bootstrap導航條可點擊和鼠標懸停顯示下拉菜單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • js Array對象的擴展函數(shù)代碼

    js Array對象的擴展函數(shù)代碼

    有時候我們需要對js的array對象擴展一些功能,這里簡單介紹下,方便需要的朋友
    2013-04-04
  • JavaScript 隨機驗證碼的生成實例代碼

    JavaScript 隨機驗證碼的生成實例代碼

    這篇文章主要介紹了JavaScript 隨機驗證碼的生成實例代碼的相關資料,需要的朋友可以參考下
    2016-09-09
  • 微信小程序圖片右邊加兩行文字的代碼

    微信小程序圖片右邊加兩行文字的代碼

    這篇文章主要介紹了微信小程序圖片右邊加兩行文字的代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 基于JS實現(xiàn)將JSON數(shù)據(jù)轉換為TypeScript類型聲明的工具

    基于JS實現(xiàn)將JSON數(shù)據(jù)轉換為TypeScript類型聲明的工具

    在TypeScript?項目中,我們經(jīng)常需要使用聲明一系列的ts類型。然而,手動寫的效率實在太低,本文就實現(xiàn)一個工具將?JSON?數(shù)據(jù)轉換為?TypeScript?類型定義,需要的可以參考一下
    2023-04-04
  • JavaScript包裝對象使用詳解

    JavaScript包裝對象使用詳解

    javascript代碼運行的過程中基本類型會找到對應的包裝對象,然后包裝對象把所有的屬性和方法給了基本類型,然后包裝對象被系統(tǒng)進行銷毀,所以理解了包裝對象可以很好的理解之前寫的代碼為什么可以這樣做了。
    2015-07-07
  • 利用JS判斷客戶端類型你應該知道的四種方法

    利用JS判斷客戶端類型你應該知道的四種方法

    這篇文章主要給大家總結介紹了關于利用JS判斷客戶端類型的四種方法,比如通過通過判斷瀏覽器的userAgent、檢查是否是移動端(Mobile)、ipad、iphone、微信、QQ等的方法,需要的朋友可以參考借鑒,下面
    2017-12-12
  • JS時間轉換標準格式、時間戳轉換標準格式的示例代碼

    JS時間轉換標準格式、時間戳轉換標準格式的示例代碼

    這篇文章主要介紹了JS時間轉換標準格式、時間戳轉換標準格式的示例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • js實現(xiàn)無縫滾動圖(可控制當前滾動的方向)

    js實現(xiàn)無縫滾動圖(可控制當前滾動的方向)

    本文主要分享了js實現(xiàn)無縫滾動圖的示例代碼,這個版本可以控制左右滾動,鼠標點擊對應的廣告會自動滑動把廣告完全展示出來,當鼠標離開,接著繼續(xù)滾動。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 利用PHP實現(xiàn)遞歸刪除鏈表元素的方法示例

    利用PHP實現(xiàn)遞歸刪除鏈表元素的方法示例

    這篇文章主要給大家介紹了關于如何利用PHP實現(xiàn)遞歸刪除鏈表元素的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10

最新評論