设计模式 _第五招式_建造者模式
一、定义
建造者模式(Builder Pattern)叫做生成器模式,将一个复杂对象的构建与它表示分离,使得同样的构造过程可以创建不同的表示,可以按照部件属性有序的创建对象。
二、代码演示
建造者模式通用类图
- Product产品类
通常是实现了模版方法模式,也就是有模版方法和基本方法。
public class Product {public void doSomething(){//独立业务逻辑}
}
- Builder抽象建造者
规范产品的组建,一般是由子类实现。
public abstract class Builder {//设置产品的不同部分,已获得不同的产品public abstract void setPart();//构造产品public abstract Product buildProduct();
}
- ConcreteBuilder具体建造者
实现抽象类定义的所有方法,并且返回一组构建好的对象。
public class ConcreteProduct extends Builder {Product product = new Product();//设置产品零件public void setPart(){//产品类内的逻辑处理}//组建一个产品public Product buildProduct(){return product ;}
}
- Director导演类
负责安排已有的模块的顺序,然后告诉Builder开始构造
public class Director {private Builder builder = new ConcreteProduct();//构建不同的产品public Product getAProduct(){builder.setPart();return builder.buildProduct();}
}
三、优点
- 封装性
使用建造者模式可以使客户端不必知道产品内部组成的细节。 - 建造者独立,容易扩展
每个建造者相互独立,很好扩展。 - 便于控制细节风险
由于具体的建造者是独立的,因此可以对建造者过程逐步细化,而不会对其它模块产生影响。
四、缺点
五、应用场景
- 相同的方法,不同的执行顺序,产生不同的事件结果。
- 多个部件或零件,都可以封装到一个对象中,但是产生的运行结果又不相同,则可以采用该模式。
- 产品类非常复杂,或者产品类中调用的顺序不同,产生的结果不同,这非常时候建造者模式。
六、注意事项
- 建造者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式最大的不同地方,虽然都是创建类,但是注重点不同。
- 建造者模式常常需要和模版方法模式结合使用。
设计模式 _第五招式_建造者模式相关推荐
- 云计算设计模式(十五)——管道和过滤器模式
云计算设计模式(十五)--管道和过滤器模式 分解,执行复杂处理成一系列可重复使用分立元件的一个任务.这种模式可以允许执行的处理进行部署和独立缩放任务元素提高性能,可扩展性和可重用性. 背景和问题 一个 ...
- 23种设计模式C++源码与UML实现--建造者模式
建造者模式 代码仓库地址:建造者模式 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种.Builder模式是一种对象创建模式之一,用来隐藏复合对象的创建过程.他把 ...
- 软件设计模式之模拟游角色选择(Darren建造者模式)
o(︶︿︶)o 唉,今天的状态不是很好,但是学习还是要继续的,今天和大家一起分享一下建造者模式,记得之前自己之前一直再想QQ秀换装是怎么是怎么是实现的,今天看了建造者模式我明白了... Darren又 ...
- 《大话设计模式》读书笔记-第13章 建造者模式
1.建造者模式(Builder),又叫生成器模式,它是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的比奥斯.如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们 ...
- 设计模式学习笔记(八):建造者模式
1 概述 1.1 引言 建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需的建造者类型即可 ...
- 健康管理系统第六天(移动端开发之体检预约_经典五表联查_调用阿里云提供的短信服务进行短信验证码发送)
一.移动端开发 1.移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等, 以前只能通 ...
- 操作系统_第五章文件管理_磁盘存储空间的管理
如何实现存储空间的分配和回收取决于对空闲块的管理方法. 下面介绍几种常用的管理方法: 一 位示图法 注意,记住这几句话:每个盘面里面有扇区, 扇区里有磁盘组, ...
- 编译原理_正规集和正规式_有限自动机
** 正规集和正规式 ** 也就是说程序设计语言的合法单词是 正规集,而正规式可以用来表示正规集 正规集是集合 正规式的等价可以转换为集合的等价来证明 将每一类的单词符号写成一个正规式,通过或运算将这 ...
- 什么叫做罗列式_什么叫做罗列式_陈列,罗列是什么意思?
展开全部 陈列是指把商品有规律e69da5e6ba9062616964757a686964616f31333365666166地集中展示给顾客.商品陈列的目标是占据更多的陈列空间.尽可能地增加货架上的 ...
最新文章
- php 数据钻取,多层钻取 - 海致BDP帮助中心、帮助文档
- 城市地图, 军事地图, 矿山地图, 电力地理, 电子地图, 制图, 编辑, OCX控件, VC++源代码组件库...
- JavaScript将成为浏览器战争的主战场
- latex中算法命令_比较Java 8中的命令式和功能性算法
- oracle基础授权,Oracle基础学习3--Oracle创建用户并授权
- bzoj2561 最小生成树
- 2021高通人工智能创新大赛垃圾分类赛题第五次研讨会
- 装系统可能会出现的问题--无法装在该磁盘,因为格式的原因
- DW里面html鼠标点击特效,【好好学习】-DW-鼠标点击 爆米花特效 代码
- APS高级计划排程系统的基本原理和排程步骤
- HDU - 6184 Counting Stars (无向图找三元环)
- OSChina 周四乱弹 —— 人类首张黑洞照片
- MySQL技能树学习体验及期望
- mfc中在vector里添加控件类型的数据时出现C2248错误
- Mac 电脑鼠标和触摸板滚动方向不一致的问题
- 位置式和增量式PID控制
- 慧算账安利创业者如何选择代理记账公司
- RBM受限玻尔兹曼机的一点理解
- 视频去水印的软件哪个好用
- 中国人为什么喜欢蹲着?