工厂方法与抽象工厂的比较
工厂方法
创建一个产品系列的对象,而这个产品系列中的每个对象的创建都对应着一个工厂,也就是说,产品系列中的各个产品与创建它的工厂是一一对应的关系;
选择了工厂就等于选择了产品;
工厂方法模式提供了两层抽象:对各个产品的公共抽象和对各个工厂的公共抽象;
抽象方法
区别:最明显的一点是,工厂方法模式中只有一类产品,他们实现了一个统一的接口;而抽象工厂有多个类别的产品,他们分别实现了不同的功能(多个接口)。
其次是工厂本身所拥有的方法数量不同;工厂需要有生产不同类别产品的功能,如果抽象工厂中的产品的功能简化到一个,也便成为了工厂方法。(引出类别的概念,类别是指具有相同功能的一类产品的总称。)
抽象工厂模式具有创建多个系列以及多个系列中不用类别的产品的能力。
同样,抽象工厂也具有两层抽象:各个工厂的抽象和对各个工厂内同类别产品的抽象;
抽象工厂的使用除了对多系列多类别的应用外,还有一点很重要的原则,即它的一系列的产品总是在一起使用的,只有这样才更能体现出抽象工厂的价值。
来源:http://www.cnblogs.com/shenfx318/archive/2007/01/16/621237.html