Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET工厂模式_.net_Design Patterns_Factory - Fatal编程技术网

.NET工厂模式

.NET工厂模式,.net,design-patterns,factory,.net,Design Patterns,Factory,可能重复: 各位专家 我正在读关于工厂模式的书 根据第条—— 我们定义了接口,接口是由类实现的。基于某些属性,我们决定实例化哪个类 看了另一篇文章- 我们定义抽象类并在子类中实现它 列出的两个例子完全不同。基于我记得的基本原理 我们何时使用接口?何时需要实现多态行为 我们什么时候使用抽象类来提供默认的基本功能 请帮助我理解使用interaces和使用抽象类是如何被称为工厂模式的 这两种方法有效吗 为格式问题道歉 提前感谢因为模式是抽象概念,它们不严格依赖于实现;因此,使用接口或抽象类都是

可能重复:

各位专家

我正在读关于工厂模式的书

  • 根据第条——
  • 我们定义了接口,接口是由类实现的。基于某些属性,我们决定实例化哪个类

  • 看了另一篇文章-
  • 我们定义抽象类并在子类中实现它

    列出的两个例子完全不同。基于我记得的基本原理

    • 我们何时使用接口?何时需要实现多态行为
    • 我们什么时候使用抽象类来提供默认的基本功能
    请帮助我理解使用interaces和使用抽象类是如何被称为工厂模式的

    这两种方法有效吗

    为格式问题道歉


    提前感谢

    因为模式是抽象概念,它们不严格依赖于实现;因此,使用接口或抽象类都是有效的方法

    其主要思想是通过抽象来“简化”对象创建

    您是使用接口还是使用抽象类取决于您的实现。根据我的经验,工厂模式通常在类结构已经定义的情况下发挥作用。例如,我已经决定在我的模型中使用接口或抽象类,现在我想进行重构,以便更简单地创建对象=>我选择工厂模式。
    希望这能有所帮助。

    在我看来,使用接口还是抽象类是一个实现细节,与工厂模式没有直接关系。它所做的只是指定另一个类(工厂)来为您创建对象,而不是您自己调用构造函数。通过这种方式,您可以集中任何需要的幕后魔术,例如,决定要实例化的具体类型的各种因素,保留一个对象池以重用对象,以防构造函数由于某种原因变得很重,或者使用合理的默认值填充复杂的类构造。