7

he estado tratando de aprender acerca de la inyección de dependencia y he estado leyendo sobre y tratando de codificar un pequeño contenedor de inyección de dependencias similar a esto: http://fabien.potencier.org/article/12/do-you-need-a-dependency-injection-containerinyección de dependencias de contenedores - patrón de la fábrica

La única cosa que me confunde es este :

¿No es un contenedor de inyección de dependencia simplemente una implementación glorificada del patrón de fábrica?

Si es así, ¿por qué no llamarlo así? ¿Por qué la necesidad de un término elegante sólo para confundir?

Si no lo es, ¿alguien puede explicar lo que me falta aquí?

+1

posible duplicado de [inyección de dependencias vs patrón de la fábrica] (http: // stackoverflow. com/questions/557742/dependency-injection-vs-factory-pattern) – podiluska

+1

'Dependency Injection' es un término mucho más amplio que 'Dependency Injection Container'. Es fácil ver la diferencia entre DI y Factory, no es tan fácil ver la diferencia entre un DI Container y una Factory. Entonces no creo que sea una pregunta duplicada. – Russ

Respuesta

7

Tiene que separar Inyección de dependencia e Inversión de control.

inyección de dependencias es que se inyecta en las dependencias de la clase en lugar de dejar la clase en sí sea responsable de sus dependencias.

Inversión de Control es más bien algo que toma el control del objeto y que es de por vida. En este caso, depende del contenedor decidir cuándo y cómo debe crearse y eliminarse un objeto.

El patrón de fábrica consiste en crear un nuevo objeto en cada llamada. El patrón en sí no dice nada sobre cómo deberían crearse las dependencias.

Es por eso que puede configurar diferentes tiempos de vida y utilizar contenedores infantiles para controlar objetos con una vida útil limitada.

He escrito un artículo sobre eso aquí: http://www.codeproject.com/Articles/386164/Get-injected-into-the-world-of-inverted-dependenci

O si te gusta ver con más ejemplos: http://www.codeproject.com/Articles/440665/Having-fun-with-Griffin-Container

Cuestiones relacionadas