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()的方法,在新方法里面从新赋值便可;
接口

相关文章
相关标签/搜索