设计模式(04)创建者模式

原创 2017年07月17日 17:57:25

From Now On,Let us begin Design Patterns。

创建者模式

定义

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

创建者模式有如下几个特点:

1. 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时由于一个复杂对象的单个属性可能会发生变化(例如:制造汽车时使用的某一部件属于不同的厂家)但是整个复杂对象的构建过程却不会发生变化(例如:汽车的构建图纸已经固定,只需要把部件按照图纸装配好)

2. 当构造过程必须允许被构造的对象有不同表示时

通用类图:
这里写图片描述

角色解说:

Product产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。

Builder抽象构造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现。这样更容易扩展。一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品。

ConcreteBuilder具体建造者:实现抽象类的所有未实现的方法,具体来说一般是两项任务:组建产品;返回组建好的产品。

Director导演类:负责调用适当的建造者来组建产品,导演类一般不与产品类发生依赖关系,与导演类直接交互的是建造者类。一般来说,导演类被用来封装程序中易变的部分。

创建者模式的优点:

  • 封装性:导演类起到封装(应该是封装产品构造参数设定,避免高层模块深入到建造者内部的实现类。当然,在建造者模式比较庞大时,导演类可以有多个)的作用,可以使客户端不呢知道产品内部组成的细节。

  • 建造者独立,容易扩展:具体的建造者之间是相互独立的,对系统扩展有利。如果有新的需求,通过实现一个新的建造者类就可以完成,基本上不用修改之前已经测试通过的代码,因此也就不会对原有功能引入风险。

  • 便于控制细节风险:由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

  • 建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和建造者类是比较稳定的,因此,将主要的业务逻辑封装在导演类中对整体而言可以取得比较好的稳定性。

创建者模式的缺点:

  • 不清楚

创建者模式的使用场景:

相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。

创建者模式的例子:

具体的产品:
这里写图片描述

创建者类:负责具体的实现,我们具体的其他的实现可以在这里扩展,新建新的创建者类就可以了,并且实现对应的功能
这里写图片描述

导演:负责具体的业务逻辑,当我们需要其他的流程的时候,可以加新的导演类
这里写图片描述

建造房屋的场景:
这里写图片描述

建造结果:
这里写图片描述

我们如何对当前例子实现扩展呢?

接着举例说明:(从两方面:工人和导演)
这里写图片描述
导演类:
这里写图片描述

测试:
这里写图片描述

运行结果:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明出处:http://blog.csdn.net/yabay2208 https://blog.csdn.net/yabay2208/article/details/75258439

《软件创新——冲破高技术营造的牢笼》好书推荐

    过节在家,重新拾起一本名为《软件创新——冲破高技术营造的牢笼》的书。该书的作者是艾伦.库博,VB之父,一位从事软件开发30多年的先行者,却对现行的软件开发方法提出了严厉而深刻的批评(甚至包括业...
  • Musicwind
  • Musicwind
  • 2002-03-07 09:01:00
  • 1273

Java程序员从笨鸟到菜鸟之(三十四)大话设计模式(五)创建者模式和原型模式

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188            创建者模式是创建型模式中最负责的一个设计模式了,创建者负责构建一...
  • csh624366188
  • csh624366188
  • 2012-04-18 13:04:33
  • 6235

设计模式(五)创建者模式(Builder)

一、模式定义造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的...
  • xingjiarong
  • xingjiarong
  • 2015-11-25 18:15:51
  • 2712

五分钟一个设计模式之创建者模式

五分钟一个设计模式,用最简单的方法来描述设计模式。认识创建者模式创建者模式(又叫生成器模式)是为创建一个产品而生的,这个产品的组装算法是确定的,但零部件可以分配给多个厂商生产。使用创建者模式来创建产品...
  • daguanjia11
  • daguanjia11
  • 2015-05-24 11:10:17
  • 1309

设计模式——建造者模式解析

1.  建造者模式介绍建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式包括的角色:(1)Builder:给出一个抽象接口或抽象类,以规范产品的建造...
  • SEU_Calvin
  • SEU_Calvin
  • 2016-08-19 13:33:04
  • 12981

C++实现设计模式之--建造者模式

建造者模式,属于创建性设计模式。其适用范围为: 1. 在项目中创建过程复杂 2. 会被重复使用来创建不同的对象。 当满足这两个条件的时候,便可以使用建造者模式。那么问题来了,什么是建造者模式...
  • hy5784210
  • hy5784210
  • 2016-05-26 22:52:36
  • 1155

JS设计模式之创建型设计模式总结

JS设计模式: 创建型设计模式, 简单工厂模式, 工厂方法模式, 抽象工厂模式 原型模式, 单例模式...
  • ganyingxie123456
  • ganyingxie123456
  • 2017-05-31 22:55:22
  • 378

设计模式——建造者

最近的心得,我发现学一门设计模式,不管你是否能立刻理解它,第一最要紧的是要记住两个东西。1、它是属于什么范畴的设计模式。2、记住UML图。这两个是打开这个设计模式之门的金钥匙!为什么这么讲?因为刚刚学...
  • hello_haozi
  • hello_haozi
  • 2014-08-25 14:17:08
  • 16461

C++实现 设计模式 创建者模式案例

  • 2012年09月05日 23:12
  • 552KB
  • 下载

【java设计模式】之 建造者(Builder)模式

我们还是举上一节的例子:生产汽车。上一节我们通过模板方法模式控制汽车跑起来的动作,那么需求是无止境的,现在如果老板又增加了额外的需求:汽车启动、停止、鸣笛引擎声都由客户自己控制,他想要什么顺序就什么顺...
  • eson_15
  • eson_15
  • 2016-05-06 08:59:09
  • 5780
收藏助手
不良信息举报
您举报文章:设计模式(04)创建者模式
举报原因:
原因补充:

(最多只允许输入30个字)