Activator.CreateInstance
与工厂有什么区别?它们可以互换使用吗?或者我们需要工厂模式吗?
答案 0 :(得分:4)
Activator.CreateInstance
是一个静态方法,它使用该类型的默认构造函数创建指定类型的实例。
虽然factory pattern处理了创建对象(产品)的问题,但未指定将要创建的确切对象类。
您可以在工厂模式中“使用”Activator.CreateInstance
以返回不同类型的对象。 See this example。您也可以create a generic factory使用Activator.CreateInstance
答案 1 :(得分:3)
工厂模式是更高级别的模式。它为您提供了一个结构,您可以在其中解决对象创建可能出现的一些问题。引用Wikipedia,
经常创建对象 不需要复杂的过程 适当包括在 撰写对象。对象的 创造可能会导致重大 重复代码,可能需要 信息无法访问 组成对象,可能不会提供 足够的抽象水平,或 否则可能不属于 撰写对象的问题。
中需要的一些过程 创建一个对象包括 确定要创建的对象, 管理对象的生命周期, 并管理专业化的建设和 关注对象的担忧。
Activator.CreateInstance没有解决任何这些问题,它只允许您创建一个类型的新实例。如果您没有上述问题(并且“工厂模式”的许多用法不在此类问题的上下文中),Activator.CreateInstance将没问题。