【发布时间】:2018-11-27 17:08:33
【问题描述】:
Activator.CreateInstance 和工厂有什么区别?它们可以互换使用吗?还是我们还需要工厂模式?
【问题讨论】:
-
Activator.CreateInstance 将为您从一个类型实例化一个对象。它可以很好地融入工厂模式。
标签: c# design-patterns factory createinstance
Activator.CreateInstance 和工厂有什么区别?它们可以互换使用吗?还是我们还需要工厂模式?
【问题讨论】:
标签: c# design-patterns factory createinstance
Activator.CreateInstance 是一个静态方法,它使用该类型的默认构造函数创建指定类型的实例。
虽然factory pattern 处理创建对象(产品)的问题,但没有指定将要创建的对象的确切类别。
您可以在工厂模式中“使用”Activator.CreateInstance 来返回不同类型的对象。 See this example。你也可以create a generic factory 使用Activator.CreateInstance
【讨论】:
工厂模式是更高层次的模式。它为您提供了一个结构,您可以在其中解决创建对象时可能出现的一些问题。引用Wikipedia,
对象的创建经常 需要复杂的过程不 适合包含在一个 构成对象。对象的 创建可能会导致显着 代码重复,可能需要 无法访问的信息 组成对象,可能不提供 足够的抽象级别,或 否则可能不属于 组合对象的关注点。
一些需要的过程 对象的创建包括 确定要创建的对象, 管理对象的生命周期, 和管理专业的建设和 拆除对象的关注点。
Activator.CreateInstance 没有解决任何这些问题,它仅允许您创建一个类型的新实例。如果您没有上述问题(并且“工厂模式”的许多用途不在此类问题的上下文中),那么 Activator.CreateInstance 就可以了。
【讨论】: