c#中的工厂vs工厂方法模式

时间:2016-08-22 08:11:51

标签: c# .net design-patterns factory-pattern factory-method

有人可以帮我理解以下有关工厂方法模式的查询吗?

我引用this链接作为样本。

1.工厂方法模式中抽象类Factory的需求是什么?什么             如果使用正常的班级?

2.据说代码的更改不会影响客户端。但     如果添加了新的类product3,则为适当的             客户端代码也需要更改。(根据下面的代码)。那么这种设计模式的优势是什么?

3. objFactories[0] = new concreteFactoryforProduct1();优于concreteFactoryforProduct1 factory = new concreteFactoryforProduct1();

的好处
    Factory[] objFactories = new Factory[2]; 
    objFactories[0] = new concreteFactoryforProduct1(); 
    objFactories[1] = new concreteFactoryforProduct2(); 
    foreach (Factory objFactory in objFactories) 

     { 
            Product objProduct = objFactory.GetProduct(); 
            objProduct.GetDetails(); 
        } 

4.为什么我们不能在简单的设计模式中实现开放式原则?

1 个答案:

答案 0 :(得分:1)

(1)根据抽象类的最简单使用,添加抽象可避免使用新的Factory()创建实例。 (因为它没有意义,和动物和大象一样 - >动物只是一种抽象,没有任何实体存在,称为动物)

(2)这只是一个演示。世界上没有用于列出可用工厂的用例。

(3)在示例中,它是一个Factory数组,您的问题不适用。

(4)我认为你在不使用Factory方法模式的情况下询问情况。可能有很多情况。您可以确定是否尝试实施它。