建造者模式(Builder Pattern)

 定义:使用多个简单的对象一步一步构建成一个复杂的对象。
目的:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
场景:一些基本部件不会变,而其组合经常变化的时候。
// 声明一个产品类
class Product {
constructor () { }
} // 声明一个建造者类
class BuilderProduct {
constructor () {
// 建造产品名称
this.nameBuilder = (name) => {
this.name = name || null
}
// 建造产品版本
this.versionBuilder = (version) => {
this.version = version || null
}
// 建造产品生产日期
this.createTimeBuilder = (createTime) => {
this.createTime = createTime || null
}
// 组合建造产品
this.getProduct = () => {
let product = new Product()
if (this.name) {
product.name = this.name
} if (this.version) {
product.version = this.version
} if (this.createTime) {
product.createTime = this.createTime
} return product
}
} } // 声明一个需求类
class Demand {
constructor (demands) {
let builderProduct = new BuilderProduct()
builderProduct.nameBuilder(demands.name)
builderProduct.versionBuilder(demands.version)
builderProduct.createTimeBuilder(demands.createTime)
return builderProduct.getProduct()
}
} let demand = new Demand({
name: 'SKILL.NULL'
})

Git地址:https://github.com/skillnull/Design-Mode-Example

JavaScript设计模式样例五 —— 建造者模式的更多相关文章

  1. JavaScript设计模式 样例二 —— 策略模式

    策略模式(Strategy Pattern): 定义:定义了一族算法: 封装了每个算法: 这族的算法可互换代替. 目的:将算法的使用与算法的实现分离开来. 场景:可用来消除大量的条件分支语句. 例:J ...

  2. JavaScript设计模式 样例一 —— 工厂模式

    工厂模式(Factory Pattern): 定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行. 目的:工厂模式是为了解耦,把对象的创建和使用 ...

  3. JavaScript设计模式样例四 —— 单例模式

    单例模式(Singleton Pattern): 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 目的:阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例. 场景: ...

  4. JavaScript设计模式 样例三 —— 装饰模式

    装饰模式(Decorator Pattern): 定义:在不改变原对象的情况下,动态的给对象添加一些额外的职责.就功能而言,装饰模式相比生成子类更为灵活. 目的:把类的核心职责和装饰功能区分开.可以去 ...

  5. Java设计模式菜鸟系列(十五)建造者模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39863125 建造者模式(Builder):工厂类模式提供的是创建单个类的模式.而建造者模 ...

  6. javascript设计模式详解之命令模式

    每种设计模式的出现都是为了弥补语言在某方面的不足,解决特定环境下的问题.思想是相通的.只不过不同的设计语言有其特定的实现.对javascript这种动态语言来说,弱类型的特性,与生俱来的多态性,导致某 ...

  7. javascript设计模式详解之策略模式

    接上篇命令模式来继续看下js设计模式中另一种常用的模式,策略模式.策略模式也是js开发中常用的一种实例,不要被这么略显深邃的名字给迷惑了.接下来我们慢慢看一下. 一.基本概念与使用场景: 基本概念:定 ...

  8. C#设计模式(5)——建造者模式

    1.建造者模式介绍 在软件开发中,有时我们要创建一个复杂的对象,这个对象由几个子部件按一定的步骤组合而成,这时候我们就可以使用建造者模式了.说到建造者我们首先想到的是盖房子,盖房子简单的说有三个步骤: ...

  9. Java设计模式(3)建造者模式(Builder模式)

    Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构 ...

  10. 【读书笔记】读《JavaScript设计模式》之装饰者模式

    一.定义 装饰者模式可用来透明地把对象包装在具有同样接口的另一个对象之中.这样一来,你可以给一个方法添加一些行为,然后将方法调用传递给原始对象.相对于创建子类来说,使用装饰者对象是一种更灵活的选择(装 ...

随机推荐

  1. Linux下命令行开启关闭触摸板

    Linux下命令行开启关闭触摸板 从设备列表中找到触摸板的设备id,调用xinput可以控制设备的开启关闭. 示例代码如下: #!/bin/bash device=`xinput list | gre ...

  2. Swoole v6 能否让 PHP 再次伟大?

    大家好,我是码农先森. 现状 传统的 PHP-FPM 也是多进程模型的的运行方式,但每个进程只能处理完当前请求,才能接收下一个请求.而且对于 PHP 脚本来说,只是接收请求和响应请求,并不参与网络通信 ...

  3. .NET 日志系统-3 结构化日志和集中日志服务

    .NET 日志系统-3 结构化日志和集中日志服务 系列文章 认识.NET 日志系统 https://www.cnblogs.com/ZYPLJ/p/17663487.html .NET 认识日志系统- ...

  4. 3568F-Qt工程编译说明

  5. 【资料分享】Xilinx Zynq-7010/7020工业核心板规格书(双核ARM Cortex-A9 + FPGA,主频766MHz)

    1 核心板简介 创龙科技SOM-TLZ7x是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业核心板,处理器集成PS端双核ARM Co ...

  6. Python 潮流周刊#59:Polars 1.0 发布了,PyCon US 2024 演讲视频也发布了(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. 将传统应用带入浏览器的开源先锋「GitHub 热点速览」

    现代浏览器已经不再是简单的浏览网页的工具,其潜能正在通过技术不断地被挖掘和扩展.得益于 WebAssembly 等技术的出现,让浏览器能够以接近原生的速度执行非 JavaScript 语言编写的程序, ...

  8. oeasy教您玩转vim - 62 - # 缓冲buffer

    ​ 编辑过程 回忆上次 我们这次了解了编辑过程 默认有一个替换文件swap 修改的内容会保存到一个swap文件 如果swp已经存在 会有个swo文件 以此类推 替换文件可以进行对源文件的修复 没保存到 ...

  9. 基础-数组_C语言

    C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量. 数组的声明并不是声明一个个单独的变量,比如 runoob0. ...

  10. 【服务器】Ubuntu虚拟内存设置

    引子 最近服务器内存老是爆掉,64G的内存对于四五个人同时使用还是有点勉强,上网查询了一下虚拟内存的教程,本博客记录一下方法. swap内存设置 假设你想将swap文件放在/mnt/data/mem目 ...