有人可以帮我理解以下有关工厂方法模式的查询吗?
我引用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.为什么我们不能在简单的设计模式中实现开放式原则?
答案 0 :(得分:1)
(1)根据抽象类的最简单使用,添加抽象可避免使用新的Factory()创建实例。 (因为它没有意义,和动物和大象一样 - >动物只是一种抽象,没有任何实体存在,称为动物)
(2)这只是一个演示。世界上没有用于列出可用工厂的用例。
(3)在示例中,它是一个Factory数组,您的问题不适用。
(4)我认为你在不使用Factory方法模式的情况下询问情况。可能有很多情况。您可以确定是否尝试实施它。