设计模式之抽象工厂模式

这里将抽象工厂和工厂方法进行对比。

从定义上说:

Factory Method: 
Define an interface for create an object,but let subclass decide which class to instantiate.Factory Method lets a class defer instantiation to the subclasses. 

Abstract Factory: 
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

工厂方法创建一般只有一个方法,创建一种产品。 
抽象工厂一般有多个方法,创建一系列产品。

具体来说,就是他们的目的不一样:

 
工厂方法创建 "一种" 产品,他的着重点在于"怎么创建",也就是说如果你开发,你的大量代码很可能围绕着这种产品的构造,初始化这些细节上面。也因为如此,类似的产品之间有很多可以复用的特征,所以会和模版方法相随。 

抽象工厂需要创建一些列产品,着重点在于"创建哪些"产品上,也就是说,如果你开发,你的主要任务是划分不同差异的产品线,并且尽量保持每条产品线接口一致,从而可以从同一个抽象工厂继承。

本质上,Abstract Factory为什么Abstract,从FactoryMethod上抽象出来的。每个Abstract Factory创建的都是一条产品线,而这条产品线会有多个子类派生。

Design Patterns一般是在设计阶段考虑的,真正编码的时候,是先看需求,然后考虑这些需求同哪些模式的适用场合匹配.实际开发中对代码修改后,很可能就随之改变了原来的模式特征,这也很正常,模式之间本来就是可以互相演化和关联的。

设计模式背后的面向设计准则和面向设计特性都是一样的,所以每个模式看起来都有相似的地方,在做设计的时候,让设计模式慢慢的被发现和浮现出来,这样的过程也就是重构和软件系统演化的过程。

 

参考链接:

http://www.iteye.com/topic/18648 

posted @ 2013-03-23 14:48  WillYan  阅读(173)  评论(0编辑  收藏  举报