建造者模式是相對比較簡單的一種設計模式,屬於建立型模式的一種;算法
定義:將一個複雜的對象分解成多個簡單的對象來進行構建,將複雜的構建層與表現層分離,使相同的構建過程能夠建立不一樣的表示模式;設計模式
優勢:this
模式做用:spa
注意事項:設計
白話解釋:code
某土豪想建一個房子,某土豪只須要找包工頭,包工頭再去找施工團隊來建造房子,而不須要土豪本身去一個個的找工人搭建施工團隊開始施工;包工頭知道土豪的需求,也知道哪裏能找到工人搭建施工團隊,工人能夠直接幹活,中間節省了土豪直接和工人溝通的成本;土豪不須要知道房子該怎麼建,土豪只須要最後能驗收到房就行;對象
在寫代碼以前咱們先分析一下:blog
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()裏面是具體的施工過程,也就是具體作的事情,Fangzi()裏面一開始都是空的,沒有客廳、廚房、臥室;Baogongtou()裏面只是對外宣傳能夠建房子,而後傳入工人方法調用工人進行施工;工人方法執行完了也就是施工完了,而後就是交房;一個新的方法裏面實例化Fangzi()的方法,在新方法裏面從新賦值便可;
接口