工厂方法模式(Factory method)以及与抽象工厂(abstract factory)的区别
先看经典说法,
Define an interface for creating an object, but let subclasses
decidewhich class to instantiate. Factory Method lets a class defer
instantiation to subclasses. ----Gang of Four (定义一个创建对象的接口,
让子类决定用哪个类来实例化对象。工厂方法把类的实现放在子类中完成。)
Gang of Four把这一段看作是这个模式的目的(intent),但我看更像该模式的方
法(apporach)。因为连形式都说的很清楚了。
1. 一个接口。
2. 接口中有一个创建方法。
对这个接口的使用必然涉及工厂模式。它的使用方式是多种多样的。
我们来看一个例子,
MyAbstractFactory f = new MyAnotherConcreateFactory();但如果配合上工厂方法模式,就可以变成这样,public class client{ public void doSomething(){ MyAbstractFactory f = new MyConcreteFactory(); Product1 p1 = f.getProduct1(); Product2 p2 = f.getProduct2(); p1.doSomethingWith(p2); }public abstract MyAbstractFactory createFactory();}public class ASubClass extends client{public MyAbstractFactory createFactory(){return new MyConcreteFactory();}}这是工厂方法模式,就像前面说的那样,它有一个创建接口(abstract
createFactory()可以看做接口),有对这个接口的实现。它也是抽象工厂模式。
或者说,这种抽象工厂的创建,使用了工厂方法模式。
希望这篇文章能帮你从形式上理解工厂方法模式以及它和抽象工厂模式的区别。
关于抽象工厂的详细讲解,请参考http://hi.baidu.com/dapplehou/blog/item /f4645edf52a4c21f4954038a.html