zoukankan      html  css  js  c++  java
  • Javascript设计模式——建造者模式

      建造者模式是相对比较简单的一种设计模式,属于创建型模式的一种;

      定义:将一个复杂的对象分解成多个简单的对象来进行构建,将复杂的构建层与表现层分离,使相同的构建过程可以创建不同的表示模式;

        优点:

    1. 建造者模式的封装性比较好,创建对象和构建过程解耦;
    2. 建造者模式很容易扩展,当我们需要扩展的时候,通过一个新的建造者就可以实现;

      模式作用:

    1. 分步创建一个复杂的对象 
    2. 解耦封装过程和具体创建组件    
    3. 无需关心组件如何组装

      注意事项:

    1. 一定要一个稳定的算法支持  
    2. 加工工艺是暴露的,也就是说土豪可以随时去看房子建的怎么样了

      白话解释:

      某土豪想建一个房子,某土豪只需要找包工头,包工头再去找施工团队来建造房子,而不需要土豪自己去一个个的找工人搭建施工团队开始施工;包工头知道土豪的需求,也知道哪里能找到工人搭建施工团队,工人可以直接干活,中间节省了土豪直接和工人沟通的成本;土豪不需要知道房子该怎么建,土豪只需要最后能验收到房就行;

    在写代码之前我们先分析一下:

        1、产出的东西是房子
        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()里面是具体的施工过程,也就是具体做的事情,Fangzi()里面一开始都是空的,没有客厅、厨房、卧室;Baogongtou()里面只是对外宣传可以建房子,然后传入工人方法调用工人进行施工;工人方法执行完了也就是施工完了,然后就是交房;一个新的方法里面实例化Fangzi()的方法,在新方法里面重新赋值即可;

      

      

  • 相关阅读:
    课程设计之第二次冲刺----第十天
    课程设计之第二次冲刺----第九天
    课程设计之第二次冲刺----第八天
    课程设计之第二次冲刺----第七天
    课程设计之第二次冲刺----第6天
    课程设计之第二次冲刺----第五天
    课程设计之第二次冲刺----第四天
    课程设计之第二次冲刺----第三天
    课程设计之第二次冲刺----第二天
    第一个sprint与第二个sprint阶段总结
  • 原文地址:https://www.cnblogs.com/dengyao-blogs/p/11661248.html
Copyright © 2011-2022 走看看