您的位置:首页 > 编程语言 > Java开发

java设计模式--工厂模式学习之使用…

2016-06-08 09:23 375 查看
 如果不使用工厂模式来实现我们的例子,也许代码会减少很多--只需要实现已有的车,不使用多态。

但是在可维护性上,可扩展性上是非常差的(你可以想象一下,添加一辆车后要牵动的类)。因此为了提高扩展性和维护性,多写些代码是值得的。

适用场合:

 创建新对象最简单的办法是使用new关键字和具体类。只有在某些场合下,

创建和维护对象工厂所带来的额外复杂性才是物有所值。本节概括了这些场合。

1 动态实现

 如果需要像前面自行车的例子一样,创建一些用不同方式实现同一接口的对象,

那么可以使用一个工厂方法或简单工厂对象来简化选择实现的过程。

这种选择可以是明确进行的也可以是隐含的。前者如自行车那个例子,顾客可以选择需要的自行车型号;

在这些场合下,你通常要与一系列实现了同一个接口、可以被同等对待的类打交道。这是Java中使用工厂模式的最常见的原因。

2 节省设置开销

 如果对象需要进行复杂并且彼此相关的设置,那么使用工厂模式可以减少每种对象所需的代码量。

如果这种设置只需要为特定类型的所有实例执行一次即可,这种作用尤其突出。

把这种设置代码放到类的构造函数中并不是一种高效的做法,这是因为即便设置工作已经完成,

每次创建新实例的时候这些代码还是会执行,而且这样做会把设置代码分散到不同的类中。

工厂方法非常适合于这种场合。它可以在实例化所有需要的对象之前先一次性地进行设置。

无论有多少不同的类会被实例化,这种办法都可以让设置代码集中在一个地方。

如果所用的类要求加载外部库的话,这尤其有用。工厂方法可以对这些库进行检查并动态加载那些未找到的库。这些设置代码只存在于一个地方,因此以后改起来也方便得多。

3 用许多小型对象组成一个大对象

 工厂方法可以用来创建封装了许多较小对象的对象。考虑一下自行车对象的构造函数。

自行车包含着许多更小的子系统:车轮、车架、传动部件以及车闸等。

如果你不想让某个子系统与较大的那个对象之间形成强耦合,而是想在运行时从许多子系统中进行挑选的话,

那么工厂方法是一个理想的选择。

使用这种技术,某天你可以为售出的所有自行车配上某种链条,要是第二天找到另一种更中意的链条,

可以改而采用这个新品种。实现这种改变很容易,因为这些自行车类的构造函数并不依赖于某种特定的链条品种。

 

参考:http://gcq04552015.iteye.com/blog/1182609
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: