个人理解的应用场景

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

相关概念的通俗解释

  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

JavaScript设计模式学习——builder pattern(建造者模式)相关推荐

  1. java builder pattern_Java Builder Pattern建造者模式详解及实例

    Java Builder Pattern 1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指 ...

  2. Javascript设计模式(四)-- 建造者模式

    定义 建造者模式:将一个复杂对像的构建层与其表示层相互分离,同样的构建过程可采用不同的表示. 与之前的模式比较 工厂模式主要是为了创建对象实例或者类簇(抽象工厂),关心的是最终产出(创建)的是什么.不 ...

  3. 进阶学习(3.4) Builder Pattern 建造者模式

    1, 解决了什么 1.1 按照步骤拆分复杂对象的创建 1.2 能快速查找到是哪个步骤出了问题 1.2 更换蓝图就可以生产不同的具象对象 2, 参与者 需求者(Builder),             ...

  4. 肝一肝设计模式【四】-- 建造者模式

    系列文章目录 肝一肝设计模式[一]-- 单例模式 传送门 肝一肝设计模式[二]-- 工厂模式 传送门 肝一肝设计模式[三]-- 原型模式 传送门 肝一肝设计模式[四]-- 建造者模式 传送门 肝一肝设 ...

  5. 北风设计模式课程---7、建造者模式

    北风设计模式课程---7.建造者模式 一.总结 一句话总结: 设计模式都是对生活中好的做事方法的一些抽象,使得各司其职,减少出错. 建造者模式可以看做模仿的生活中:设计师,施工队做复杂房子交给客户的场 ...

  6. 设计模式学习笔记——命令(Command)模式

    设计模式学习笔记--命令(Command)模式 @(设计模式)[设计模式, 命令模式, command] 设计模式学习笔记命令Command模式 基本介绍 命令案例 类图 实现代码 Command接口 ...

  7. 设计模式学习笔记——装饰(Decorator)模式

    设计模式学习笔记--装饰(Decorator)模式 @(设计模式)[设计模式, 装饰模式, decorator] 设计模式学习笔记装饰Decorator模式 基本介绍 装饰案例 类图 实现代码 Dis ...

  8. 设计模式(五)——建造者模式

    设计模式(五)--建造者模式 一.建造者模式简介 1.建造者模式简介 建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式和抽象工厂模式在功能上很相似,都是用来 ...

  9. 设计模式(五)——建造者模式详解

    设计模式(五)--建造者模式详解 概述 结构 代码案例 优缺点 使用场景 模式扩展 创建者模式对比 工厂方法模式和建造者模式 抽象工厂模式和建造者模式 概述 建造者模式就是说将一个复杂对象的构建和表示 ...

最新文章

  1. 干掉Navicat:正版,MySQL官方客户端真香!
  2. matlab球落点的数学建模,MATLAB数学建模:智能优化算法-人工鱼群算法
  3. Go开发之路 -- 指针类型
  4. 强化学习笔记2:序列决策(Sequential Decision Making)过程
  5. MapReduce编程实战之“初识”
  6. EF架构~为IEnumerable接口添加增删查等操作,原因是IEnumerable导航属性更放心
  7. boost::geometry::partition用法的测试程序
  8. php集成jpush教程,Laravel 集成 JPush 极光推送指北
  9. 浅析NTFS 文件系统数据流安全问题
  10. spring vaadin_在Spring Boot中使用Vaadin的简介
  11. python中if命令简单介绍及注意事项(含笔记)
  12. SparkStreaming基础
  13. MATLAB学习笔记(十四)
  14. 错误的日志可能会导致疯狂;好日志可能会成为魔杖
  15. 怎样对流媒体进行压力测试_四合一气体检测仪怎样进行气体测试?
  16. 洛谷 P2804 神秘数字
  17. 计算机维修主板,电脑维修|干货收好!自己就能修主板
  18. 解决桌面右键无NVIDIA控制面板选项
  19. echarts 生成 迁徙图_Echarts4+EchartsGL 3D迁徙图(附源码)
  20. python微信头像_Python帮你微信头像任意添加装饰别再@微信官方了

热门文章

  1. Spring-boot 启动完成时执行指定任务
  2. 阿里感悟系列文章(存)
  3. Linq to sql与EF零碎知识点总结
  4. 如何在命令行模式下升级的你Visual Studio的Solution文件
  5. php 字典 枚举,秒爆十万字典:奇葩技巧快速枚举“一句话后门”密码
  6. java 读utf-8 xml_用Java和UTF-8編碼生成有效的XML。
  7. leetcode算法题--斐波那契数列
  8. leetcode算法题--用两个栈实现队列
  9. python编程计算1!+2!+...+10!_如何用C语言编程计算 1!+2!+3!+…+10!?
  10. python使用xlrd读取xlsx文件_005:【Python读取本地Excel文件】使用xlrd模块来读取本地Excel文件...