【问题标题】:Activator.CreateInstance vs Factory PatternActivator.CreateInstance 与工厂模式
【发布时间】:2018-11-27 17:08:33
【问题描述】:

Activator.CreateInstance 和工厂有什么区别?它们可以互换使用吗?还是我们还需要工厂模式?

【问题讨论】:

  • Activator.CreateInstance 将为您从一个类型实例化一个对象。它可以很好地融入工厂模式。

标签: c# design-patterns factory createinstance


【解决方案1】:

Activator.CreateInstance 是一个静态方法,它使用该类型的默认构造函数创建指定类型的实例。

虽然factory pattern 处理创建对象(产品)的问题,但没有指定将要创建的对象的确切类别。

您可以在工厂模式中“使用”Activator.CreateInstance 来返回不同类型的对象。 See this example。你也可以create a generic factory 使用Activator.CreateInstance

【讨论】:

    【解决方案2】:

    工厂模式是更高层次的模式。它为您提供了一个结构,您可以在其中解决创建对象时可能出现的一些问题。引用Wikipedia

    对象的创建经常 需要复杂的过程不 适合包含在一个 构成对象。对象的 创建可能会导致显着 代码重复,可能需要 无法访问的信息 组成对象,可能不提供 足够的抽象级别,或 否则可能不属于 组合对象的关注点。

    一些需要的过程 对象的创建包括 确定要创建的对象, 管理对象的生命周期, 和管理专业的建设和 拆除对象的关注点。

    Activator.CreateInstance 没有解决任何这些问题,它仅允许您创建一个类型的新实例。如果您没有上述问题(并且“工厂模式”的许多用途不在此类问题的上下文中),那么 Activator.CreateInstance 就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多