Activator.CreateInstance
和工厂有什么区别?它们可以互换使用吗?还是我们还需要工厂模式?
问问题
7468 次
2 回答
4
Activator.CreateInstance
是一个静态方法,它使用该类型的默认构造函数创建指定类型的实例。
虽然工厂模式处理创建对象(产品)的问题,但没有指定将创建的对象的确切类。
您可以在工厂模式中“使用”Activator.CreateInstance
返回不同类型的对象。请参阅此示例。您还可以使用创建通用工厂Activator.CreateInstance
于 2010-04-06T11:40:17.903 回答
3
工厂模式是更高层次的模式。它为您提供了一个结构,您可以在其中解决创建对象时可能出现的一些问题。引用维基百科,
对象的创建通常需要不适合包含在组合对象中的复杂过程。对象的创建可能导致代码的大量重复,可能需要组合对象无法访问的信息,可能无法提供足够的抽象级别,或者可能不是组合对象关注点的一部分。
创建对象所需的一些过程包括确定要创建哪个对象、管理对象的生命周期以及管理对象的专门构建和拆除关注点。
Activator.CreateInstance 没有解决任何这些问题,它仅允许您创建一个类型的新实例。如果您没有上述问题(并且“工厂模式”的许多用途不在此类问题的上下文中),那么 Activator.CreateInstance 就可以了。
于 2010-04-06T11:42:20.253 回答