设计模式(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

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

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

设计模式——建造者

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

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

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

设计模式-创建者模式

创建者模式   将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示 Demo   abstract class carModel{     //这里存储所有组装车需要...
  • MrCoders
  • MrCoders
  • 2017年02月10日 11:25
  • 128

设计模式--创建者模式

这个模式也是比较难理解的,我看了《设计模式之禅》上讲解的例子,但是看完之后一头雾水,而且好乱,仍然没有理解,看了好几遍,还是没有理解,于是我又去翻开我的课本,看那上面的例子,但是结果依然。于是上网搜,...
  • qq_20545159
  • qq_20545159
  • 2015年10月12日 22:48
  • 258

设计模式(创建型)之建造者模式(Builder Pattern)

建造者模式将客户端与包含多个组成部分的复杂对象的创建过程分离,客户端压根不用知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个的复杂对象,不同的具体建造者...
  • yanbober
  • yanbober
  • 2015年04月28日 16:38
  • 4496

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

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

用代码和UML图化解设计模式之《创建者模式》

今天学习了建造者模式,目前较为复杂的一个模式之一。但是思考起来就觉得她很像抽象工厂的生产者模式。   但是比生产者多了一个导演着的身份,这个指挥着建造者去生产谁。。。   所以,这个模式还是挺...
  • wallwind
  • wallwind
  • 2012年10月24日 00:27
  • 1549

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

6
  • javandroid
  • javandroid
  • 2014年02月19日 19:56
  • 210

设计模式学习(六)创建者模式

创建者模式就是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,而且客户端不用知道对象的构建细节。 抽象工厂与创建者类似,只是创建者模式进一步的实现了类的单一职责。 ...
  • yjccao123
  • yjccao123
  • 2013年04月24日 14:48
  • 398
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式(04)创建者模式
举报原因:
原因补充:

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