Search code examples
c#design-patternsfactorycreateinstance

Activator.CreateInstance vs Factory Pattern


What is the difference between Activator.CreateInstance and factory? Can they be used interchangeably? Or stil do we need a factory pattern?


Solution

  • The factory pattern is a higher-level pattern. It gives you a structure in which you can address some issues that can occur with object creation. To quote from Wikipedia,

    The creation of an object often requires complex processes not appropriate to include within a composing object. The object's creation may lead to a significant duplication of code, may require information not accessible to the composing object, may not provide a sufficient level of abstraction, or may otherwise not be part of the composing object's concerns.

    Some of the processes required in the creation of an object include determining which object to create, managing the lifetime of the object, and managing specialized build-up and tear-down concerns of the object.

    Activator.CreateInstance doesn't address any of these issues, it merely allows you to create a new instance of a type. If you don't have issues like the above (and many uses of the "factory pattern" aren't in the context of such issues), Activator.CreateInstance will be fine.