Javascript設計模式——建造者模式

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

定義:
將一個復雜的對象分解成多個簡單的對象來進行構建,將復雜的構建層與表現(xiàn)層分離,使相同的構建過程可以創(chuàng)建不同的表示模式;
優(yōu)點:
1.建造者模式的封裝性比較好,創(chuàng)建對象和構建過程解耦;
2.建造者模式很容易擴展,當我們需要擴展的時候,通過一個新的建造者就可以實現(xiàn);
模式作用:
1.分步創(chuàng)建一個復雜的對象
2.解耦封裝過程和具體創(chuàng)建組件    
3.無需關心組件如何組裝
注意事項:
1.一定要一個穩(wěn)定的算法支持  
2.加工工藝是暴露的,也就是說土豪可以隨時去看房子建的怎么樣了
白話解釋:
  某土豪想建一個房子,某土豪只需要找包工頭,包工頭再去找施工團隊來建造房子,而不需要土豪自己去一個個的找工人搭建施工團隊開始施工;包工頭知道土豪的需求,也知道哪里能找到工人搭建施工團隊,工人可以直接干活,中間節(jié)省了土豪直接和工人溝通的成本;土豪不需要知道房子該怎么建,土豪只需要最后能驗收到房就行;

在寫代碼之前我們先分析一下:
1.產(chǎn)出的東西是房子
2.包工頭調用工人進行開工 而且他要很清楚工人們具體的某一個大項
3.工人是蓋房子的 工人可以建臥室 建客廳 建廚房
4.包工頭只是一個接口,他只對外說蓋房子,他不用做事情;

  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()里面只是對外宣傳可以建房子,然后傳入工人方法調用工人進行施工;工人方法執(zhí)行完了也就是施工完了,然后就是交房;一個新的方法里面實例化Fangzi()的方法,在新方法里面重新賦值即可;

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容