创建类模式大PK(总结)

创建类模式包括工厂方法模式建造者模式抽象工厂模式单例模式原型模式,它们都能够提供对象的创建和管理职责。其中的单例模式和原型模式非常容易理解,单例模式是要保持在内存中只有一个对象,原型模式是要求通过复制的方式产生一个新对象,这两个不容易混淆。下面主要分析其它三种模式。

一、工厂方法模式VS建造者模式

1、意图不同

在工厂方法模式里,关注的是一个产品整体,无须关心产品的各部分是如何创建出来的;但在建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序,它关注的是“由零件一步一步地组装出产品对象”,简单地说,工厂模式是一个对象创建的粗线条应用,建造者模式则是通过细线条勾勒出一个复杂对象,关注的是产品组成部分的创建过程。

2、产品的复杂度不同

工厂方法模式创建的产品一般都 是单一性质产品,而建造者模式创建的则是一个复合产品,它由各个部件复合而成,部件不同产品对象当然不同。这不是说工厂方法模式创建的对象简单,而是指它们的粒度大小不同。一般来说,工厂方法模式的对象粒度比较粗,建造者模式的产品对象粒度比较细。

实践:如果需要详细关注一个产品部件的生产、安装步骤,则选择建造者,否则工厂。

二、抽象工厂模式VS建造者模式

抽象工厂模式就像一个巨头有许多“工厂”,使用“工厂”来描述构建者,而建造者模式就像一个工厂有许多“车间”,使用“车间”来描述构建者。抽象工厂模式是从一个更高层次去看对象的创建,具体到工厂内部还有很多车间,但这些都是隐藏在工厂内部的细节,对外不公布。而建造者模式就不同了,它是由车间构成,不同的车间完成不同的创建和装配任务,一个完整的汽车生产过程需要引擎制造车间、引擎装配车间的配合才能完成,它们配合的基础就是设计蓝图,而这个蓝图在车间主任手中(导演类)。建造者模式更关心建造过程。虽然从外界来看一个车间还是生产车辆,但是这个车间的转型是非常快的,只要重新设计一个蓝图,即可产生不同的产品。

实践:相对来说,抽象工厂模式比建造者模式的尺度要大,它关注产品整体。而建造者模式关注构建过程,因此建行者模式可以很容易地构建出一个崭新的产品,只要导演类能够提供具体的工艺流程。也正因为如此,如果希望屏蔽对象的创建过程,只提供一个封装良好的对象,则可以选择抽象工厂方法模式。而建造者模式可以用在构件的装配方面,如通过装配不同的组件或者相同组件的不同顺序,可以产生一个新的对象,它可以产生一个非常灵活的架构,方便地扩展和维护系统。

猜你喜欢

转载自lobert.iteye.com/blog/2070227