为了对一个类进行实例化,通常使用这个类的构成函数,但是有时候出现这类情况:几个类实现了同一个接口,具有同样的操作、返回了同样的抽象类型,不知道该为哪个类型创建对象,因为需要根据条件来控制对哪个类进行实例化,并且此时类的数量可能增减,接口却是稳定的。我们需要工厂方法模式!
我们遇见一个.NET中的经典实例就是枚举器。Enumerator的 GetEnumerator()的方法是一个用了工厂方法模式的例子。这个方法将调用者与需要进行实例化的类隔离开来了。
需要指出的是并不是能够创建并返回一个对象的方法都是工厂方法。工厂方法模式需要包括一个方法,这个方法创建并返回一个对象,同时客户无需要了解应该具体去实例化哪个类。
我们再看另外一个例子:












































































































