视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JavaScript设计模式系列三:建造者模式
2020-11-27 19:57:05 责编:小采
文档

本篇文章给大家分享的是JavaScript设计模式系列三:建造者模式,有感兴趣的朋友可以看一下

建造者模式

建造者模式(builder pattern)比较简单,它属于创建型模式的一种,将一个复杂的对象分解成多个简单的对象来进行构建,将复杂的构建层与表示层分离,使得相同的构建过程可以创建不同的表示的模式便是建造者模式。

优点

  • 建造者模式的封装性很好,对象本身与构建过程解耦。

  • 建造者模式很容易进行扩展。如果有新的需求,通过实现一个新的建造者类就可以完成。

  • 适用场景

    需要生成的对象具有复杂得内部结构;且内部属性本身相互依赖


    建造者模式的代码实现

    建造者模式主要有4个部分:product产品类、Builder建造者类、Director指挥者类、客户。

    主要的流程是:
    1. 客户提出需求。

    2. 指挥者根据用户需求,指挥建造者去完成需求的各个部分。

    3. 建造者完成相应的部分。

    我们来看一下相应的代码:
    产品类为一辆加工的空壳汽车。

    /**
     * 产品类:car 目前需要构建一辆车。
     */
    
    function car () {
     this.name = '',
     this.number = '',
     this.wheel = '',
     this.engine = ''
    }

    接下来看一下建造者类:

    /* 
    * 建造者类,里面有专门负责各个部分的工人
    */
    function carBuilder () {
     this.nameBuilder = function () {
     this.name = '很厉害的车'
     },
     this.numberBuilder = function () {
     this.number = '88888888'
     },
     this.wheelBuilder = function () {
     this.wheel = '高级橡胶做的轮子'
     },
     this.engineBuilder = function () {
     this.engine = '很厉害的引擎'
     },
     this.getCar = function () {
     var Car = new car()
     Car.name = this.name;
     Car.number= this.number;
     Car.wheel = this.wheel;
     Car.engine = this.engine;
     return Car;
     }
    }

    再这里我们可以看到各个部分的工人以及他们的工作,他们的各自的工作最终合并成一辆汽车。

    指挥者类:

    /**
     * 指挥者类,指挥各个部分的工人工作
     */
    function director () {
     this.action = function (builder) {
     builder.nameBuilder();
     builder.numberBuilder();
     builder.wheelBuilder();
     builder.engineBuilder();
     } 
    }

    最后就是使用方法:

    /**
     * 使用方法
     */
    
    var builder = new carBuilder();
    var director = new director();
    director.action(builder);
    var Car = builder.getCar();
    console.log(Car);

    最终客户通过getCar方法得到了这辆车,并且不需要知道其中得建造细节。


    总结

    建造者模式主要用于“分布构建一个复杂的对象”,它很容易进行扩展。如果有新的需求,通过实现一个新的建造者类就可以完成,并且建造者模式解耦了对象本身与构建过程,使得我们不用关心具体的建造过程。

    相关推荐:

    JavaScript设计模式系列一:工厂模式

    JavaScript设计模式系列二:单例模式

    下载本文
    显示全文
    专题