C# c语言中的工厂与工厂方法模式#
有人能帮我理解以下关于工厂方法模式的查询吗 我引用链接作为示例 1.工厂方法模式中抽象类工厂的需求是什么?什么 如果使用普通类 2.声明代码的更改不会影响客户。但是 如果添加了一个新的类product3,则 客户代码也需要更改。(按照以下代码)。那么这种设计模式的优势是什么 3.C# c语言中的工厂与工厂方法模式#,c#,.net,design-patterns,factory-pattern,factory-method,C#,.net,Design Patterns,Factory Pattern,Factory Method,有人能帮我理解以下关于工厂方法模式的查询吗 我引用链接作为示例 1.工厂方法模式中抽象类工厂的需求是什么?什么 如果使用普通类 2.声明代码的更改不会影响客户。但是 如果添加了一个新的类product3,则 客户代码也需要更改。(按照以下代码)。那么这种设计模式的优势是什么 3.objFactories[0]=new-concreteFactoryforProduct1()的好处是什么overconcreteFactoryforProduct1工厂=新的concreteFactoryforPro
objFactories[0]=new-concreteFactoryforProduct1()的好处是什么
overconcreteFactoryforProduct1工厂=新的concreteFactoryforProduct1()代码>
4.为什么我们不能在简单设计模式中实现开闭原则?(1)根据抽象类的最简单用法,添加抽象避免了使用新工厂()创建实例。(因为它没有意义,就像动物和大象一样->动物只是一种抽象,没有实体存在称为动物)
(2) 这只是一个演示。地球上没有任何用例可以列出可用的工厂
(3) 在本例中,它是一个工厂数组,您的问题不适用
(4) 我认为您询问的是一种没有使用工厂方法模式的情况。可能有很多情况。您可以确定是否尝试实现它。1)但我正在创建实例objFactories[0]=new-concreteFactoryforProduct1();2) 我不清楚你想解释什么。3) 为什么要在那里使用OBJFactorys[0”?为什么我不能使用类实例?优点是什么?(1)是的,没关系,您没有调用new Factory()->constructor。只是引用类型。(2) 实际上,如果您想要一个由Factory1创建的对象,只需创建一个实例(最好是Singleton)并调用其方法。(3) 在这里,如果没有这些,你怎么能在同一个数组中插入两种类型的混凝土工厂呢?我理解你的观点。但是您正在解释模式实现,我在问使用这种方式的好处。仅此示例使用数组。您可以有许多直接分配给工厂抽象实例的示例。@TomCruise我想您是在问(3)。我明白你的意思。使用抽象的一个优点是。以此为例<代码>工厂myFactory=new-concreteFactoryforProcuct1()
因为您的引用类型是工厂
,所以如果将来需要,您可以这样做<代码>myFactory=new-concreteFactoryforProcuct2()代码>并且您也可以参考此。我问。:)
Factory[] objFactories = new Factory[2];
objFactories[0] = new concreteFactoryforProduct1();
objFactories[1] = new concreteFactoryforProduct2();
foreach (Factory objFactory in objFactories)
{
Product objProduct = objFactory.GetProduct();
objProduct.GetDetails();
}