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

  建造者模式是相對比較簡單的一種設計模式,屬於建立型模式的一種;算法

  定義:將一個複雜的對象分解成多個簡單的對象來進行構建,將複雜的構建層與表現層分離,使相同的構建過程能夠建立不一樣的表示模式;設計模式

    優勢:this

  1. 建造者模式的封裝性比較好,建立對象和構建過程解耦;
  2. 建造者模式很容易擴展,當咱們須要擴展的時候,經過一個新的建造者就能夠實現;

 

 

  模式做用:spa

  1. 分步建立一個複雜的對象 
  2. 解耦封裝過程和具體建立組件    
  3. 無需關心組件如何組裝

  注意事項:設計

  1. 必定要一個穩定的算法支持  
  2. 加工工藝是暴露的,也就是說土豪能夠隨時去看房子建的怎麼樣了

  白話解釋: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()的方法,在新方法裏面從新賦值便可;
接口

相關文章
相關標籤/搜索