设计模式之抽象工厂模式
这里将抽象工厂和工厂方法进行对比。
从定义上说:
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一般是在设计阶段考虑的,真正编码的时候,是先看需求,然后考虑这些需求同哪些模式的适用场合匹配.实际开发中对代码修改后,很可能就随之改变了原来的模式特征,这也很正常,模式之间本来就是可以互相演化和关联的。
设计模式背后的面向设计准则和面向设计特性都是一样的,所以每个模式看起来都有相似的地方,在做设计的时候,让设计模式慢慢的被发现和浮现出来,这样的过程也就是重构和软件系统演化的过程。
参考链接: