Activator.CreateInstance vs Factory Pattern

时间:2010-04-06 11:10:13

标签: c# design-patterns factory createinstance

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:3)

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

  

经常创建对象   不需要复杂的过程   适当包括在   撰写对象。对象的   创造可能会导致重大   重复代码,可能需要   信息无法访问   组成对象,可能不会提供   足够的抽象水平,或   否则可能不属于   撰写对象的问题。

     

中需要的一些过程   创建一个对象包括   确定要创建的对象,   管理对象的生命周期,   并管理专业化的建设和   关注对象的担忧。

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