JavaScript设计模式学习——builder pattern(建造者模式)
个人理解的应用场景
举个例子,比如想要创建各种类型的车的实例,车的类型有很多种,但创建每种类型车的接口定义可能是一样的,就用到了此模式
相关概念的通俗解释
- 上述例子中接口的定义叫builder
- 接口到每种类型的车的具体实现叫concrete builder
- 真正用于创建车的类叫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(建造者模式)相关推荐
- java builder pattern_Java Builder Pattern建造者模式详解及实例
Java Builder Pattern 1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指 ...
- Javascript设计模式(四)-- 建造者模式
定义 建造者模式:将一个复杂对像的构建层与其表示层相互分离,同样的构建过程可采用不同的表示. 与之前的模式比较 工厂模式主要是为了创建对象实例或者类簇(抽象工厂),关心的是最终产出(创建)的是什么.不 ...
- 进阶学习(3.4) Builder Pattern 建造者模式
1, 解决了什么 1.1 按照步骤拆分复杂对象的创建 1.2 能快速查找到是哪个步骤出了问题 1.2 更换蓝图就可以生产不同的具象对象 2, 参与者 需求者(Builder), ...
- 肝一肝设计模式【四】-- 建造者模式
系列文章目录 肝一肝设计模式[一]-- 单例模式 传送门 肝一肝设计模式[二]-- 工厂模式 传送门 肝一肝设计模式[三]-- 原型模式 传送门 肝一肝设计模式[四]-- 建造者模式 传送门 肝一肝设 ...
- 北风设计模式课程---7、建造者模式
北风设计模式课程---7.建造者模式 一.总结 一句话总结: 设计模式都是对生活中好的做事方法的一些抽象,使得各司其职,减少出错. 建造者模式可以看做模仿的生活中:设计师,施工队做复杂房子交给客户的场 ...
- 设计模式学习笔记——命令(Command)模式
设计模式学习笔记--命令(Command)模式 @(设计模式)[设计模式, 命令模式, command] 设计模式学习笔记命令Command模式 基本介绍 命令案例 类图 实现代码 Command接口 ...
- 设计模式学习笔记——装饰(Decorator)模式
设计模式学习笔记--装饰(Decorator)模式 @(设计模式)[设计模式, 装饰模式, decorator] 设计模式学习笔记装饰Decorator模式 基本介绍 装饰案例 类图 实现代码 Dis ...
- 设计模式(五)——建造者模式
设计模式(五)--建造者模式 一.建造者模式简介 1.建造者模式简介 建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式和抽象工厂模式在功能上很相似,都是用来 ...
- 设计模式(五)——建造者模式详解
设计模式(五)--建造者模式详解 概述 结构 代码案例 优缺点 使用场景 模式扩展 创建者模式对比 工厂方法模式和建造者模式 抽象工厂模式和建造者模式 概述 建造者模式就是说将一个复杂对象的构建和表示 ...
最新文章
- 干掉Navicat:正版,MySQL官方客户端真香!
- matlab球落点的数学建模,MATLAB数学建模:智能优化算法-人工鱼群算法
- Go开发之路 -- 指针类型
- 强化学习笔记2:序列决策(Sequential Decision Making)过程
- MapReduce编程实战之“初识”
- EF架构~为IEnumerable接口添加增删查等操作,原因是IEnumerable导航属性更放心
- boost::geometry::partition用法的测试程序
- php集成jpush教程,Laravel 集成 JPush 极光推送指北
- 浅析NTFS 文件系统数据流安全问题
- spring vaadin_在Spring Boot中使用Vaadin的简介
- python中if命令简单介绍及注意事项(含笔记)
- SparkStreaming基础
- MATLAB学习笔记(十四)
- 错误的日志可能会导致疯狂;好日志可能会成为魔杖
- 怎样对流媒体进行压力测试_四合一气体检测仪怎样进行气体测试?
- 洛谷 P2804 神秘数字
- 计算机维修主板,电脑维修|干货收好!自己就能修主板
- 解决桌面右键无NVIDIA控制面板选项
- echarts 生成 迁徙图_Echarts4+EchartsGL 3D迁徙图(附源码)
- python微信头像_Python帮你微信头像任意添加装饰别再@微信官方了
热门文章
- Spring-boot 启动完成时执行指定任务
- 阿里感悟系列文章(存)
- Linq to sql与EF零碎知识点总结
- 如何在命令行模式下升级的你Visual Studio的Solution文件
- php 字典 枚举,秒爆十万字典:奇葩技巧快速枚举“一句话后门”密码
- java 读utf-8 xml_用Java和UTF-8編碼生成有效的XML。
- leetcode算法题--斐波那契数列
- leetcode算法题--用两个栈实现队列
- python编程计算1!+2!+...+10!_如何用C语言编程计算 1!+2!+3!+…+10!?
- python使用xlrd读取xlsx文件_005:【Python读取本地Excel文件】使用xlrd模块来读取本地Excel文件...