本文是自己对工厂模式的学习总结。
具体可参考:
TerryLee的 .NET设计模式(3):抽象工厂模式(Abstract Factory)
http://www.cnblogs.com/Terrylee/archive/2005/12/13/295965.html
目前常用的工厂方法包括简单工厂模式(不属于Gof23种设计模式),工厂方法和抽象工厂方法。这三种方法有各自的适用场景,也有缺点。
简单工厂模式适用于对简单对象的实例化,它的缺点就是可扩展性差,如果要增加新的逻辑对象,必须修改工厂类,违背了开放,封闭原则。简单工厂模式加上反射可以解决这个问题。
工厂方法是对简单工厂的进一步改进和抽象,它提出抽象工厂和抽象产品,将具体的实例化推迟到具体工厂来实现,有更高的可扩展性。
抽象工厂创建一系列相关或相互依赖的产品。
总结:用最简单的话来概括就是,简单工厂只有一个具体工厂类来创建一种基类的多个不同派生类,工厂方法就是有多个派生于一个基类的具体工厂类,每个具体工厂只生产一种基类的一个派生类,抽象工厂也是只有一个工厂基类,但是每个具体工厂生产多个相关基类的各一个派生类。