Wikipedia article about factory method pattern
包含以下示例:
/* Almost same as Factory, just an additional exposure to do something with the created method */
public abstract class ProductAbstractFactory
{
protected abstract IProduct MakeProduct();
public IProduct GetObject() // Implementation of Factory Method.
{
return this.MakeProduct();
}
}
public class PhoneConcreteFactory : ProductAbstractFactory
{
protected override IProduct MakeProduct()
{
IProduct product = new Phone();
//Do something with the object after you get the object.
product.SetPrice(20.30);
return product;
}
}
也使用模板方法模式(GetObject
调用抽象MakeProduct
)。在这种(特定的)情况下,我不会那样做,因为模板方法不包含任何“环绕”代码,并且使GetObject
抽象化并在派生类中进行覆盖就足够了。
我在这里监督吗? 还是我的假设是正确的,即这个示例并不像演示那样简单?
答案 0 :(得分:0)
要回答标题问题,工厂方法模式是模板方法模式的一种特殊形式。换句话说,根据定义,所有工厂方法都是模板方法。