在Wikipedia示例中为Factory Method模式使用模板方法有什么好处?

时间:2019-08-29 14:28:09

标签: design-patterns factory-method

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抽象化并在派生类中进行覆盖就足够了。

我在这里监督吗? 还是我的假设是正确的,即这个示例并不像演示那样简单?

1 个答案:

答案 0 :(得分:0)

要回答标题问题,工厂方法模式是模板方法模式的一种特殊形式。换句话说,根据定义,所有工厂方法都是模板方法。