2019独角兽企业重金招聘Python工程师标准>>>

建造者模式的定义:

Separate the construction of a complex object from its representation so that the sameconstruction process can create different representations.(将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。)

建造者模式通用类图如下:

在建造者模式中,有如下4个角色:
● Product产品类
    通常是实现了模板方法模式,也就是有模板方法和基本方法,这个参考第10章的模板方法模式。例子中的BenzModel和BMWModel就属于产品类。
● Builder抽象建造者
    规范产品的组建,一般是由子类实现。例子中的CarBuilder就属于抽象建造者。
● ConcreteBuilder具体建造者
    实现抽象类定义的所有方法,并且返回一个组建好的对象。例子中的BenzBuilder和BMWBuilder就属于具体建造者。
● Director导演类
    负责安排已有模块的顺序,然后告诉Builder开始建造,在上面的例子中就是我们的老大,××公司找到老大,说我要这个或那个类型的车辆模型,然后老大就把命令传递给我,我和我的团队就开始拼命地建造,于是一个项目建设完毕了。

建造者模式的应用:

优点:

● 封装性
        使用建造者模式可以使客户端不必知道产品内部组成的细节,如例子中我们就不需要关心每一个具体的模型内部是如何实现的,产生的对象类型就是CarModel。
    ● 建造者独立,容易扩展
        BenzBuilder和BMWBuilder是相互独立的,对系统的扩展非常有利。
    ● 便于控制细节风险
        由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

使用场景:

● 相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。
    ● 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可以使用该模式。
    ● 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适。
    ● 在对象创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程中不易得到时,也可以采用建造者模式封装该对象的创建         过程。该种场景只能是一个补偿方法,因为一个对象不容易获得,而在设计阶段竟然没有发觉,而要通过创建者模式柔化创建过程,本身已经违       反设计的最初目标。

转载于:https://my.oschina.net/hcy8888/blog/1596721

设计模式之建造者模式(01)相关推荐

  1. 建造者模式java_java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

  2. Java设计模式(建造者模式-适配器模式-桥接模式)

    Java设计模式Ⅲ 1.建造者模式 1.1 建造者模式概述 1.2 建造者模式的注意事项和细节 1.3 代码理解 2.适配器模式 2.1 类适配器模式 2.1.1 代码理解 2.2 对象适配器模式 2 ...

  3. 折腾Java设计模式之建造者模式

    博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...

  4. java设计模式 建造模式_理解java设计模式之建造者模式

    理解java设计模式之建造者模式 发布于 2020-12-10| 复制链接 摘记: 建造者模式(Builder Pattern)主要用于"分步骤构建一个复杂的对象",在这其中&qu ...

  5. 建造者模式 php,PHP设计模式之建造者模式定义与用法简单示例

    本文实例讲述了PHP设计模式之建造者模式.分享给大家供大家参考,具体如下: 建造者模式: 将复杂对象的创建过程和表示进行分离(好吧,我也看不懂什么意思1). 来点我人类能听懂的话: 1.在客户端看来需 ...

  6. C#设计模式之四建造者模式(Builder Pattern)【创建型】

    一.引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一 ...

  7. 学习《图说设计模式》建造者模式

    图说设计模式之建造者模式 1. 模式动机 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮.方向盘.发送机等各种部件.而对于大多数用户而言,无须知道这 ...

  8. 实践GoF的23种设计模式:建造者模式

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...

  9. java设计模式之建造者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  10. python设计模式之建造者模式

    python设计模式之建造者模式 ​ 建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成.只有当各个部分都完成了,这个对象才完整.建造者模式表现为复杂对象的创建与 ...

最新文章

  1. oracle 参数=gt;,解析gt参数
  2. WAIC 2021 | 思谋科技刘枢:赋能制造业需要什么样的算法平台?
  3. 代码对比与文件对比的一个简单方法
  4. matlab拟合工具箱cftool
  5. 【Android】Looper消息分发(msg.target.dispatchMessage), Handler消息处理(消息回调/外部回调/自身回调)
  6. MySQL + springboot修改时区的方法小结
  7. 【C++的深度剖析教程20】类型转换函数上
  8. XAF框架简介-C#语言
  9. jsp乱码介绍(续)
  10. Nginx虚拟主机别名的配置
  11. studio one 3 机架声道设置_Lenovo UC30 声卡驱动跳线VST机架跳线
  12. 奇瑞新能源硬实力 全铝车身奇瑞大蚂蚁
  13. PLC与伺服电机连接
  14. Java Web学习(1):Web应用程序与Web服务器
  15. 使用序列号激活优动漫PAINT(附激活码)
  16. JavaOJ 汉诺塔问题
  17. 详解Unity中的粒子系统Particle System (四)
  18. 大数据采集的几点问题的思考
  19. 问题解决:VScode在使用中文输入法时出现vim insert模式变成vim normal的奇怪现象( jj 映射成esc)
  20. android-Viewpager

热门文章

  1. ylb:子查询(嵌套子查询)和子查询(相关子查询)
  2. CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5
  3. php下使用 $_FILE
  4. JS格式化JSON串显示在表格中
  5. IdentityServer4 知多少
  6. 低版本浏览器支持css3 Media查询的方法, ie6-ie8 不支持css3 的时候用respond.js,html5shiv.js 【非常实用哦】。。。。。。。。。。。。...
  7. svnserve.conf: Option expected的问题解决方法
  8. Linux下修改mysql root密码
  9. zoj 2760 How Many Shortest Path 最大流
  10. Linux常用命令-入门