码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript设计模式学习——builder pattern(建造者模式)

时间:2018-03-13 01:12:13      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:function   ddp   pes   实现   开发者   esc   tor   down   rect   

个人理解的应用场景

举个例子,比如想要创建各种类型的车的实例,车的类型有很多种,但创建每种类型车的接口定义可能是一样的,就用到了此模式

相关概念的通俗解释

  1. 上述例子中接口的定义叫builder
  2. 接口到每种类型的车的具体实现叫concrete builder
  3. 真正用于创建车的类叫director

实现模式的思路

1.首先要定义builder的接口
2.然后各个concretebuilder类去实现这个接口
3.director中接收一个builder实例作为参数,最后返回一个一类车的实例

示例代码

function Director() {
    this.construct = function (builder) {
        builder.step1();
        builder.step2();
        return builder.get();
    }
}
//由于js不支持接口,我个人认为其实应当typescript定义一个接口,然后下面两个类去实现这个接口
function CarBuilder() {
    this.car = null;
    this.step1 = function () {
        this.car = new Car();
    };
    this.step2 = function () {
        this.car.addParts();
    };
    this.get = function () {
        return this.car;
    };
}

function TruckBuilder() {
    this.truck = null;
    this.step1 = function () {
        this.truck = new Truck();
    };
    this.step2 = function () {
        this.truck.addParts();
    };
    this.get = function () {
        return this.truck;
    };
}

function Car() {
    this.doors = 0;
    this.addParts = function () {
        this.doors = 4;
    };
    this.say = function () {
        log.add("I am a " + this.doors + "-door car");
    };
}

function Truck() {
    this.doors = 0;
    this.addParts = function () {
        this.doors = 2;
    };
    this.say = function () {
        log.add("I am a " + this.doors + "-door truck");
    };
}


//其他开发者使用代码段
new Director().construct(new CarBuilder());

JavaScript设计模式学习——builder pattern(建造者模式)

标签:function   ddp   pes   实现   开发者   esc   tor   down   rect   

原文地址:https://www.cnblogs.com/zhangrenjian/p/8552288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!