He encontrado este curioso Ejemplo en términos de sueltas de acoplamiento:
Cualquier aplicación que se compone de muchos objetos, que colaboran entre ellos para realizar algunas cosas útiles. Tradicionalmente, cada objeto es responsable de la obtención de sus propias referencias a los objetos dependientes (dependencias) colaborar con el. Esto lleva a que muy junto clases y duro-para-el código de la prueba.
Por ejemplo,considere un Car
objeto.
Un Car
depende de Ruedas, Motor, Combustible, Batería, etc para que se ejecute. Tradicionalmente se define la marca de tales objetos dependientes, junto con la definición de la Car
objeto.
Sin la Inyección de dependencias (DI) :
class Car{
private Wheel wh= new NepaliRubberWheel();
private Battery bt= new ExcideBattery();
//rest
}
Aquí, la Car
objeto es responsable de la creación de los objetos dependientes.
¿Y si queremos cambiar el tipo de su objeto dependiente - digamos Wheel
- después de la inicial NepaliRubberWheel()
pinchazos?
Tenemos la necesidad de volver a crear el objeto de Automóvil con su nueva dependencia decir ChineseRubberWheel()
, pero sólo el Car
fabricante puede hacer que.
Entonces lo que el Dependency Injection
nos hace para ...?
Cuando se utiliza la Inyección de Dependencia, los objetos son dados sus dependencias en tiempo de ejecución en lugar de tiempo de compilación (coche el tiempo de confección).
Así que ahora podemos cambiar la Wheel
cuando queramos. Aquí, la Dependency
(Wheel
) puede ser inyectado en Car
en tiempo de ejecución.
Después de usar DI:
class Car{
private Wheel wh= [Inject an Instance of Wheel at runtime]
private Battery bt= [Inject an Instance of Battery at runtime]
}
Fuente: la comprensión de la dependencia de la inyección