一、定义
建造者模式(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();}
}

三、优点

  • 封装性
    使用建造者模式可以使客户端不必知道产品内部组成的细节。
  • 建造者独立,容易扩展
    每个建造者相互独立,很好扩展。
  • 便于控制细节风险
    由于具体的建造者是独立的,因此可以对建造者过程逐步细化,而不会对其它模块产生影响。

四、缺点

五、应用场景

  • 相同的方法,不同的执行顺序,产生不同的事件结果。
  • 多个部件或零件,都可以封装到一个对象中,但是产生的运行结果又不相同,则可以采用该模式。
  • 产品类非常复杂,或者产品类中调用的顺序不同,产生的结果不同,这非常时候建造者模式。

六、注意事项

  • 建造者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式最大的不同地方,虽然都是创建类,但是注重点不同。
  • 建造者模式常常需要和模版方法模式结合使用。

设计模式 _第五招式_建造者模式相关推荐

  1. 云计算设计模式(十五)——管道和过滤器模式

    云计算设计模式(十五)--管道和过滤器模式 分解,执行复杂处理成一系列可重复使用分立元件的一个任务.这种模式可以允许执行的处理进行部署和独立缩放任务元素提高性能,可扩展性和可重用性. 背景和问题 一个 ...

  2. 23种设计模式C++源码与UML实现--建造者模式

    建造者模式 代码仓库地址:建造者模式 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种.Builder模式是一种对象创建模式之一,用来隐藏复合对象的创建过程.他把 ...

  3. 软件设计模式之模拟游角色选择(Darren建造者模式)

    o(︶︿︶)o 唉,今天的状态不是很好,但是学习还是要继续的,今天和大家一起分享一下建造者模式,记得之前自己之前一直再想QQ秀换装是怎么是怎么是实现的,今天看了建造者模式我明白了... Darren又 ...

  4. 《大话设计模式》读书笔记-第13章 建造者模式

    1.建造者模式(Builder),又叫生成器模式,它是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的比奥斯.如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们 ...

  5. 设计模式学习笔记(八):建造者模式

    1 概述 1.1 引言 建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需的建造者类型即可 ...

  6. 健康管理系统第六天(移动端开发之体检预约_经典五表联查_调用阿里云提供的短信服务进行短信验证码发送)

    一.移动端开发 1.移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等, 以前只能通 ...

  7. 操作系统_第五章文件管理_磁盘存储空间的管理

    如何实现存储空间的分配和回收取决于对空闲块的管理方法. 下面介绍几种常用的管理方法: 一  位示图法 注意,记住这几句话:每个盘面里面有扇区, 扇区里有磁盘组,                     ...

  8. 编译原理_正规集和正规式_有限自动机

    ** 正规集和正规式 ** 也就是说程序设计语言的合法单词是 正规集,而正规式可以用来表示正规集 正规集是集合 正规式的等价可以转换为集合的等价来证明 将每一类的单词符号写成一个正规式,通过或运算将这 ...

  9. 什么叫做罗列式_什么叫做罗列式_陈列,罗列是什么意思?

    展开全部 陈列是指把商品有规律e69da5e6ba9062616964757a686964616f31333365666166地集中展示给顾客.商品陈列的目标是占据更多的陈列空间.尽可能地增加货架上的 ...

最新文章

  1. php 数据钻取,多层钻取 - 海致BDP帮助中心、帮助文档
  2. 城市地图, 军事地图, 矿山地图, 电力地理, 电子地图, 制图, 编辑, OCX控件, VC++源代码组件库...
  3. JavaScript将成为浏览器战争的主战场
  4. latex中算法命令_比较Java 8中的命令式和功能性算法
  5. oracle基础授权,Oracle基础学习3--Oracle创建用户并授权
  6. bzoj2561 最小生成树
  7. 2021高通人工智能创新大赛垃圾分类赛题第五次研讨会
  8. 装系统可能会出现的问题--无法装在该磁盘,因为格式的原因
  9. DW里面html鼠标点击特效,【好好学习】-DW-鼠标点击 爆米花特效 代码
  10. APS高级计划排程系统的基本原理和排程步骤
  11. HDU - 6184 Counting Stars (无向图找三元环)
  12. OSChina 周四乱弹 —— 人类首张黑洞照片
  13. MySQL技能树学习体验及期望
  14. mfc中在vector里添加控件类型的数据时出现C2248错误
  15. Mac 电脑鼠标和触摸板滚动方向不一致的问题
  16. 位置式和增量式PID控制
  17. 慧算账安利创业者如何选择代理记账公司
  18. RBM受限玻尔兹曼机的一点理解
  19. 视频去水印的软件哪个好用
  20. 中国人为什么喜欢蹲着?

热门文章

  1. StoryBoard故事版之ViewController与实体类的关联和不同StoryBoard 跳转
  2. Oracle常见授权与回收权限——grant和revoke
  3. python re 正则提取中文
  4. 微信小程序云函数中的数据处理后返回
  5. Salesforce中国区或将解散?国产SaaS如何在竞争中扬长避短
  6. Detectron2的使用指南
  7. android notification应用之自定义来电通知
  8. BSN智能合约开发培训-CITA(三)
  9. 游戏引擎架构----动画
  10. 云计算HCIA学习笔记-云计算基础概念