2011-01-24 15 views
13

Duplicar posibles:
Dependency Injection vs Factory PatternC# Diferencia entre el patrón de la fábrica y de la COI

Por favor alguien puede explicar (con ejemplos sencillos) de la diferencia entre el patrón de la fábrica y la inversión del patrón de control. Preferiblemente utilizando .NET2.0

+0

¿Se refiere a "patrón de fábrica" ​​o "patrón abstracto de fábrica"? (Este último está más cerca en significado a IoC.) – Enigmativity

+0

Duplicado: http://stackoverflow.com/questions/557742/dependency-injection-vs-factory-pattern –

+2

@Mark La pregunta bien puede ser un duplicado, pero desafortunadamente no tiene respuesta aceptada –

Respuesta

16

El patrón de la fábrica: el objeto que necesita una referencia a un servicio, debe saber acerca de la fábrica que crea el Servicio:

public class BLLObject 
{ 
    public IDal DalInstance { get; set; } 

    public BLLObject() 
    { 
     DalInstance = DalFactory.CreateSqlServerDal(); 
    } 
} 

El patrón de la COI (o la inyección de dependencias):

el objeto solo necesita declarar su necesidad al servicio, usando cualquier aspecto del Patrón Ioc (Constructor, instalador o interfaz ... etc) y el contenedor intentará cumplir con esta necesidad:

public class BLLObject 
{ 
    public IDal DalInstance { get; set; } 

    public BLLObject(IDal _dalInstance) 
    { 
     DalInstance = _dalInstance; 
    } 
} 

lo que significa que en el patrón de la fábrica, el objeto decide qué método de creación (por la elección de una fábrica de hormigón específico) para utilizar, pero el patrón en el COI, que es hasta el contenedor para elegir.

por supuesto, esta no es la única deferencia, pero esto es lo que tengo en mente por el momento. corrígeme por favor si me equivoco?

1

El patrón de fábrica consiste en obtener la referencia de un tipo, por lo que en algún lugar de su código estaría llamando a una fábrica para resolver algo.

La inversión del patrón de control significa que normalmente usaría un contenedor Ioc para resolver las dependencias por usted. Esto podría ser de una manera similar a una fábrica, o más típicamente usaría la inyección de dependencia para resolver las dependencias en el constructor o los instaladores.

Cuestiones relacionadas