生成器模式

将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。

Builder Pattern

Separate the construction of a complex object from its representation so that the same construction process can create different representations.

类图

模式的结构与使用

生成器模式的结构中包括四个角色。
+ 产品(Product):具体生成器要构造的复杂对象。
+ 抽象生成器(Abstract Builder):抽象生成器是一个接口,该接口除了为创建一个Product对象的各个组件定义了若干个方法外,还定义返回Product对象的方法。
+ 具体生成器(Concrete Builder):实现Builder接口的类,具体生成器将实现Builder接口所定义的方法。
+ 指挥者(Director):指挥者是一个类,该类需含有Builder接口声明的变量。指挥者的职责是负责向用户提供具体生成器,即指挥者将请求具体生成器来构造用户所需要的Product对象,如果所请求的具体生成器成功地构造出Product对象,指挥者就可以让该具体生成器返回所构造的Product对象。

简单的例子

Java设计模式--生成器模式相关推荐

  1. Java 设计模式——状态模式

    概述 很多人在说状态模式的时候总拿策略模式来进行对比,可能他们的类图会有一点类似,可我却不认为他们有多么相像.你可以阅读<Java设计模式--策略模式>这篇博客,并与本文对比,以找到蛛丝马 ...

  2. Java设计模式——Builder模式

    前言 之前写Android程序的时候,经常会用到Dialog(对话框)这个控件.我们在使用Dialog,比如AlertDialog的时候就用到了这里要说明的Builder模式.现在我们来看一下这样的一 ...

  3. Java设计模式-工厂模式(3)抽象工厂模式

    在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗.我们所见到的工厂 ...

  4. Java设计模式-工厂模式(2)工厂方法模式

    在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...

  5. Java设计模式-工厂模式(1)简单工厂模式

    Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...

  6. java设计模式代理模式_Java中的代理设计模式

    java设计模式代理模式 代理对象或代理对象为另一个对象提供占位符,以控制对该对象的访问. 代理充当原始对象的轻量级版本或简化版本. 它支持与原始对象相同的操作,但可以将那些请求委托给原始对象以实现它 ...

  7. java设计模式 订阅模式_Java中的外观设计模式

    java设计模式 订阅模式 立面是指建筑物的外观. 当穿过街道时,我们所看到的只是建筑物的外观. 该工作面抽象了建筑物的所有复杂实现细节. 同样, 外观设计模式旨在为子系统中的一组接口提供统一的接口. ...

  8. java设计模式 订阅模式_Java中的复合设计模式

    java设计模式 订阅模式 当我们必须使用对象的树状分层结构时,复合设计模式非常有用. 它使我们能够统一对待单个对象和对象组成. 它属于结构设计模式的范畴,因为它将对象组合成树形结构以表示部分整个层次 ...

  9. java设计模式迭代器模式_迭代器设计模式示例

    java设计模式迭代器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式 ...

  10. java设计模式迭代器模式_Java中的迭代器设计模式–示例教程

    java设计模式迭代器模式 迭代器模式是一种行为模式,它用于提供遍历一组对象的标准方式. Iterator模式在Java Collection Framework中得到了广泛使用,其中Iterator ...

最新文章

  1. C# DataTable的詳細使用方法
  2. Visual Basic 9.0 前沿播报·静态篇(一)局部变量类型推测和数组初始化器
  3. 高仿真的类-请求参数映射
  4. 哈师大计算机等级考试,哈尔滨师范大学教务处
  5. activiti5第六弹 手动任务、接收任务、邮件任务
  6. Redis(1)——NoSQL数据库简介
  7. 哈希库--uthash的详细讲解(附uthash相关头文件下载)
  8. shader从入门到精通——(二)三大主流编程语言
  9. 【网启树莓派】无SD卡 从网络驱动树莓派| raspberry boot via pxe
  10. 《冰河世纪》特效指导罗皓做客【ftrack聊天室】
  11. CVPR 2020 论文大盘点-人脸技术篇
  12. 验证苹果商店服务器通知 responseBodyV2
  13. 初识SRC漏洞平台提交漏洞
  14. Cannot copy param 0 weights from layer 'fc6'; shape mismatch.
  15. 得哪个心?善护念四个地平线、三个天际层
  16. 【存储技术发展趋势】
  17. 武汉理工大学数据结构综合实验——图与景区信息管理系统实践
  18. X002---SQL用户Alteryx指南
  19. 全区开展国家网络安全宣传周活动
  20. 2023最全兼职方式,(内含接单路径)

热门文章

  1. 《四海小记c++学习之路》队列/银行叫号系统
  2. HTML5+CSS——个人在线简历
  3. 拒绝版权流氓!阿里巴巴重磅发布免费商用字体
  4. UAV021(六):系统架构优化、SBUS协议、遥控器控制电机转动
  5. su灯光插件_su各种插件合集
  6. linux过滤端口抓包_linux抓包命令tcpdump
  7. 台达触摸屏和vfd-m变频器通讯控制监视程序
  8. 富文本编辑器小技巧大杂烩之TinyMce
  9. spoon mysql教程_kettle 教程(一):简介及入门
  10. svn server启动报错:The HTTP service failed to start