通过Head First Design Patterns书籍工作。工厂方法何时比简单工厂更好,反之亦然?
我相信我理解简单工厂和工厂方法,但是我很难看到工厂方法对简单工厂有什么优点。
如果对象A使用一个简单的工厂来创建其乙对象,那么客户端可以这样创建:
A a = new A(new BFactory());
而如果一个对象使用工厂方法,客户机可以这样创建:
A a = new ConcreteA(); // ConcreteA contains a method for instantiating
// the same Bs that the BFactory above creates, with
// the method hardwired into the subclass of A, ConcreteA.
所以在简单工厂的情况下,客户端组成A,与乙工厂,而与工厂的方法,所述客户端选择为它想要的类型B的适当子类。
他们之间似乎没有多少选择。要么你必须选择你想要编写的BFactory,或者你必须选择A的正确子类来为你提供Bs。
在什么情况下比另一个好?
谢谢大家!
编辑:增加一点混乱海事组织是在首脑叙述中给出的解释,他们从简单的工厂过渡到工厂方法,通过说(第119页)“特许经营企业正在使用您的[简单]工厂创建比萨饼,但开始采用他们自己的本土程序进行其余的过程:他们会烘烤一些不同的东西。“他们有一张厨师的照片,显然他做了一些令他厌恶的比萨饼。
但是没有关于使用一个简单的工厂,让客户访问bake()方法或过程的任何其他部分。而且没有关于使用工厂方法的问题,如果它有任何问题,这些方法都会有所帮助。
所以看起来我喜欢它的原因深入浅出意味着使用一个工厂方法在一个简单的工厂是假的..
我明白你的观点,也被这个困惑了。我认为他们的观点是某些行为可以通过在(抽象)基类中实现而在子类中强制执行。 – 2010-06-28 19:40:40