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

相关文章推荐

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

From Now On,Let us begin Design Patterns。创建者模式 定义 将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示。 Separate t...

设计模式之创建者模式

Builder模式        主要用于“构建一个复杂的对象”。把复杂对象的创建过程加以抽象,通过子类继承和重写方法,来得到具有复合属性的对象。 同时为了统一创建过程,把对象的创建操作统一封...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

设计模式之创建者模式

1.什么是创建者模式(构建者模式)?          创建者模式类似于一个步骤基本固定,但是每个步骤中的具体形式却又可以变化的这类对象的创建。其中,创建者负责构建一个对象的各个部分,并且完成组装的...

设计模式05_创建者模式

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46489147 创建者模式:将一个复杂对象的构建和...

设计模式-创建者模式

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

设计模式之创建者模式

创建者(Builder)模式的C++实现

设计模式之创建者模式

生成器(创建者)模式和工厂模式都属于创建型设计模式。前一篇文章简述了简单工厂,工厂方法和抽象工厂的差异。那么生成器模式和工厂模式有什么区别呢。总结下:M为工厂类数,N为产品类数 工厂模式 比例关系为...

设计模式之创建者模式

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

设计模式--创建者模式

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

设计模式之创建者模式

意图 对象的构建与表示分离,用同样的创建过程可以创建不同的对象 适应性 创建的算法与对象的组成独立 同样的构造过程允许构造不同的对象 Builder Patten 组成 ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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