博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript设计模式学习——builder pattern(建造者模式)
阅读量:4334 次
发布时间:2019-06-07

本文共 1409 字,大约阅读时间需要 4 分钟。

个人理解的应用场景

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

相关概念的通俗解释

  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());

转载于:https://www.cnblogs.com/zhangrenjian/p/8552288.html

你可能感兴趣的文章
iOS语言中的KVO机制
查看>>
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
查看>>
响应式web设计之CSS3 Media Queries
查看>>
实验三
查看>>
机器码和字节码
查看>>
环形菜单的实现
查看>>
【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】...
查看>>
34 帧动画
查看>>
二次剩余及欧拉准则
查看>>
thymeleaf 自定义标签
查看>>
关于WordCount的作业
查看>>
UIView的layoutSubviews,initWithFrame,initWithCoder方法
查看>>
STM32+IAP方案 实现网络升级应用固件
查看>>
用74HC165读8个按键状态
查看>>
jpg转bmp(使用libjpeg)
查看>>
linear-gradient常用实现效果
查看>>
sql语言的一大类 DML 数据的操纵语言
查看>>
VMware黑屏解决方法
查看>>
JS中各种跳转解析
查看>>
JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
查看>>