转载

设计模式(八)——工厂模式总结

新专题: 设计模式 ,我会在博客( http://www.hollischuang.com )及微信公众号(hollischuang)同步更新,欢迎共同学习。

在本专题的前几篇文章中介绍了简单工厂模式、 工厂方法模式 以及抽象工厂模式。本文将会在前面几篇文章的基础上,总结下三种工厂模式的区别及联系。一方面是回顾下之前的内容,另外一方面是再次加深对工厂模式的理解。

分类

工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

工厂模式可以分为三类:

1)简单工厂模式(Simple Factory)

2)工厂方法模式(Factory Method)

3)抽象工厂模式(Abstract Factory)

这三种模式从上到下逐步抽象,并且更具一般性。

GOF在《设计模式》一书中将工厂模式分为两类: 工厂方法模式 (Factory Method)与 抽象工厂模式 (Abstract Factory)。

简单工厂模式 (Simple Factory)看为 工厂方法模式 的一种特例,两者归为一类。

创建型模式

前面介绍过的三种工厂模式在设计模式的分类中都属于创建型模式。

创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。

创建型模式在创建什么( What ),由谁创建( Who ),何时创建( When )等方面都为软件设计者提供了尽可能大的灵活性。 创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。

工厂模式的优点

工厂模式是创建型模式中比较重要的。

工厂模式的主要功能就是帮助我们实例化对象的。之所以名字中包含工厂模式四个字,是因为对象的实例化过程是通过工厂实现的,是用工厂代替new操作的。

这样做的好处是封装了对象的实例化细节,尤其是对于实例化较复杂或者对象的生命周期应该集中管理的情况。会给你系统带来更大的可扩展性和尽量少的修改量。

三种工厂模式之间的演化与区别

设计模式(八)——工厂模式总结

简单工厂 : 用来生产同一等级结构中的任意产品。(对于增加新的产品,主要是新增产品,就要修改工厂类。符合单一职责原则。不符合开放-封闭原则)

工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品,新增产品时不需要更改已有的工厂,需要增加该产品对应的工厂。符合单一职责原则、符合开放-封闭原则。但是引入了复杂性)

抽象工厂 :用来生产不同产品族的全部产品。(增加新产品时,需要修改工厂,增加产品族时,需要增加工厂。符合单一职责原则,部分符合开放-封闭原则,降低了复杂性)

参考资料

工厂模式

JAVA设计模式之工厂模式

(全文完)

原文  http://www.hollischuang.com/archives/1430
正文到此结束
Loading...