2010-07-26 9 views
49

Duplicar posible:
What is dependency injection?¿Qué es la Inyección de Dependencia?

primavera es el marco desde donde el concepto de la inyección de dependencias vino a la imagen.

¿Cuál es el propósito de DI? ¿Cómo se beneficia? ¿Cómo se implementa?

+2

La explicación más simple y clara de DI en el código: http://codeflex.co/java-dependency-injection-simple-example/ –

Respuesta

61
+1

Básicamente, en lugar de tener sus objetos creando una dependencia o pidiendo un objeto de fábrica para hacer uno para ellos, pasas las dependencias necesarias al constructor o a través de los establecedores de propiedades, y lo conviertes en un problema ajeno (un objeto más arriba en el gráfico de dependencia o un inyector de dependencia que crea el gráfico de dependencia). Una dependencia como la estoy usando aquí es cualquier otro objeto al que el objeto actual necesita contener una referencia. –

+4

He eliminado los meta comentarios aquí. Si desea conversar sobre la utilidad de las respuestas con enlaces en ellas, hágalo en el chat o en [Meta] (http://meta.stackoverflow.com). –

+1

Otro enlace muy útil que encontré al leer la inyección de dependencia por primera vez: https://www.objc.io/issues/11-android/dependency-injection-in-java/ –

21

¿Cuál es el propósito de DI?

El propósito de Dependency Injection es reducir el acoplamiento en su aplicación para que sea más flexible y fácil de probar.

¿Cómo se beneficia?

Los objetos no tienen dependencias codificadas. Si necesita cambiar la implementación de una dependencia, todo lo que tiene que hacer es Inyectar un tipo diferente de Objeto.

¿Cómo se implementa?

Existen varios métodos de inyección de dependencias. Consulte el Wikipedia article para ver ejemplos de cada uno. Una vez que los comprende, puede comenzar a investigar los diversos marcos de Injerto de Dependencia.

+2

Hola, ¿podrías decirme por qué? ¿Es difícil probar cuando una clase depende de otra clase? He estado leyendo mucho sobre esto, todavía no entiendo por qué, digamos, la clase A usa 'new' para declarar que la clase B haría difícil la prueba. Muchas gracias de antemano. – Unheilig

+0

@Unheilig - La prueba de la clase 'A' sería difícil porque no tiene forma de especificar el comportamiento de 'B' para su prueba. Recuerde, solo quiere probar su código ... no todo el código del que depende su código. –

0

DI nos permite intercambiar componentes, mejorar la capacidad de prueba y asegurar que los componentes estén flojos. DI permite resolver dependencias en tiempo de ejecución utilizando contenedores DI como Windsor Castle, Unity, Spring.net, MEF que permite que las aplicaciones sean extensibles.

8

muy corto,

¿Cuál es el propósito de DI? Con la inyección de dependencia, los objetos no definen sus dependencias por sí mismos, las dependencias se les inyectan según sea necesario.

¿Cómo se beneficia? Los objetos no necesitan saber dónde ni cómo obtener sus dependencias, lo que da como resultado un acoplamiento flexible entre los objetos, lo que los hace mucho más fáciles de probar.

¿Cómo se implementa? Normalmente, un contenedor administra el ciclo de vida de los objetos y sus dependencias según un archivo de configuración o anotaciones.

+2

Hola, ¿podrías decirme por qué es difícil probar cuando una clase depende de otra clase? He leído mucho sobre esto, todavía no entiendo por qué digamos que la clase A usa 'new' para declarar que la clase B haría difícil la prueba. Muchas gracias de antemano. – Unheilig

+0

@Unheilig https://www.youtube.com/watch?v=hBVJbzAagfs –

Cuestiones relacionadas