在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 設(shè)計模式之建造者模式
代碼復(fù)用模式(避免篇)
S.O.L.I.D 五大原則之接口隔離原則 ISP
設(shè)計模式之狀態(tài)模式
JavaScript 核心(晉級高手必讀篇)
設(shè)計模式之建造者模式
JavaScript 與 DOM(上)——也適用于新手
設(shè)計模式之中介者模式
設(shè)計模式之裝飾者模式
設(shè)計模式之模板方法
設(shè)計模式之外觀模式
強大的原型和原型鏈
設(shè)計模式之構(gòu)造函數(shù)模式
揭秘命名函數(shù)表達(dá)式
深入理解J avaScript 系列(結(jié)局篇)
執(zhí)行上下文(Execution Contexts)
函數(shù)(Functions)
《你真懂 JavaScript 嗎?》答案詳解
設(shè)計模式之適配器模式
設(shè)計模式之組合模式
設(shè)計模式之命令模式
S.O.L.I.D 五大原則之單一職責(zé) SRP
編寫高質(zhì)量 JavaScript 代碼的基本要點
求值策略
閉包(Closures)
對象創(chuàng)建模式(上篇)
This? Yes,this!
設(shè)計模式之代理模式
變量對象(Variable Object)
S.O.L.I.D 五大原則之里氏替換原則 LSP
面向?qū)ο缶幊讨话憷碚?/span>
設(shè)計模式之單例模式
Function 模式(上篇)
S.O.L.I.D 五大原則之依賴倒置原則 DIP
設(shè)計模式之迭代器模式
立即調(diào)用的函數(shù)表達(dá)式
設(shè)計模式之享元模式
設(shè)計模式之原型模式
根本沒有“JSON 對象”這回事!
JavaScript 與 DOM(下)
面向?qū)ο缶幊讨?ECMAScript 實現(xiàn)
全面解析 Module 模式
對象創(chuàng)建模式(下篇)
設(shè)計模式之職責(zé)鏈模式
S.O.L.I.D 五大原則之開閉原則 OCP
設(shè)計模式之橋接模式
設(shè)計模式之策略模式
設(shè)計模式之觀察者模式
代碼復(fù)用模式(推薦篇)
作用域鏈(Scope Chain)
Function 模式(下篇)
設(shè)計模式之工廠模式

設(shè)計模式之建造者模式

介紹

在軟件系統(tǒng)中,有時候面臨著“一個復(fù)雜對象”的創(chuàng)建工作,其通常由各個部分的子對象用一定的算法構(gòu)成;由于需求的變化,這個復(fù)雜對象的各個部分經(jīng)常面臨著劇烈的變化,但是將它們組合在一起的算法確相對穩(wěn)定。如何應(yīng)對這種變化?如何提供一種“封裝機制”來隔離出“復(fù)雜對象的各個部分”的變化,從而保持系統(tǒng)中的“穩(wěn)定構(gòu)建算法”不隨著需求改變而改變?這就是要說的建造者模式。

建造者模式可以將一個復(fù)雜對象的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。也就是說如果我們用了建造者模式,那么用戶就需要指定需要建造的類型就可以得到它們,而具體建造的過程和細(xì)節(jié)就不需要知道了。

正文

這個模式相對來說比較簡單,先上代碼,然后再解釋

function getBeerById(id, callback) {
    // 使用ID來請求數(shù)據(jù),然后返回數(shù)據(jù).
    asyncRequest('GET', 'beer.uri?id=' + id, function (resp) {
        // callback調(diào)用 response
        callback(resp.responseText);
    });
}
var el = document.querySelector('#test');
el.addEventListener('click', getBeerByIdBridge, false);
function getBeerByIdBridge(e) {
    getBeerById(this.id, function (beer) {
        console.log('Requested Beer: ' + beer);
    });
}

根據(jù)建造者的定義,表相即是回調(diào),也就是說獲取數(shù)據(jù)以后如何顯示和處理取決于回調(diào)函數(shù),相應(yīng)地回調(diào)函數(shù)在處理數(shù)據(jù)的時候不需要關(guān)注是如何獲取數(shù)據(jù)的,同樣的例子也可以在 jquery 的 ajax 方法里看到,有很多回調(diào)函數(shù)(比如 success,error 回調(diào)等),主要目的就是職責(zé)分離。

同樣再來一個 jQuery 的例子:

$('<div class= "foo"> bar </div>');

我們只需要傳入要生成的 HTML 字符,而不需要關(guān)系具體的 HTML 對象是如何生產(chǎn)的。

總結(jié)

建造者模式主要用于“分步驟構(gòu)建一個復(fù)雜的對象”,在這其中“分步驟”是一個穩(wěn)定的算法,而復(fù)雜對象的各個部分則經(jīng)常變化,其優(yōu)點是:建造者模式的“加工工藝”是暴露的,這樣使得建造者模式更加靈活,并且建造者模式解耦了組裝過程和創(chuàng)建具體部件,使得我們不用去關(guān)心每個部件是如何組裝的。