¿Que es la inyección de dependencias? ¿en que me puede ayudar?

Publicado el 14 abril 2014 por Droidblock @droidblock

La inyección de dependencia, también llamada inversión de control (IoC) pero no esta del todo bien llamarla así dado que en un artículo escrito por Martin Fowler se llega a la conclusión que ningún aspecto del control se estaba invirtiendo en cambio las dependencias eran lo que se invertía. Basándose en esa revelación, acuño la frase “inyección de dependencia” un término que describe mejor lo que ocurre.

Pero ahora bien ¿qué es la inyección de dependencia? Cualquier aplicación no trivial está formada por dos o más clases que colaboran entre sí para realizar alguna lógica. Tradicionalmente cada objeto se hacía cargo de obtener sus propias referencias a los objetos a los cuales colaboraba (sus dependencias). Esto lleva a código acoplado y difícil de probar. Cuando se aplica inyección de dependencia le decimos a una entidad externa que provea las dependencias a los objetos. Esto nos resuelve el problema del acoplamiento.

El acoplamiento es un mal necesario ya que sin él los objetos no podrían interactuar para resolver problemas, pero cuan menor sea el acoplamiento es más reutilizable, comprobable y flexible es la aplicación.

La ventaja clave de inyección de dependencia es el acoplamiento débil. Si un objeto solo conoce sus dependencias mediante su interfaz (no su implementación o como fueron definidos) entonces la dependencia puede intercambiarse con una implementación diferente sin que el objeto dependiente sepa la diferencia. Por ejemplo si defino una interfaz la implementación de la misma pude ser un objeto plano, web service, objeto remoto, etc.

Inyección de dependencia es la llave para minimizar el acoplamiento.

Puede sonar algo intimidante, evocando nociones de una técnica de programación o patrón de diseño complejo. Pero la inyección de dependencia no es tan compleja como parece . De hecho su código se vera más simple, siendo más fácil comprender y comprobar.