Inyección de Dependencias


Inyección de Dependencias

Es un patrón de diseño orientado a objetos en el que se busca reemplazar las dependencias específicas de nuestro código al momento de crear los objetos requeridos para su funcionamiento por una clase o framework encargado de proveer tales objetos en el momento requerido. Esto permite que el código sea independiente, puesto que este solo conocerá las interfaces que requiere para poder funcionar correctamente sin importar la implementación detallada de los objetos que implementan dicha interfaz. Por lo general la inyección de dependencias se realiza mediante un framework al que se le debe especificar aquellas interfaces que requiere la aplicación como también las clases que implementan dicha interfaz.

Con la inyección de dependencias, es posible realizar pruebas unitarias sin necesidad de implementar tales objetos realmente, ya que se pueden realizar tales pruebas utilizando mocking, esto aligera demasiado el rendimiento de una prueba unitaria, puesto que no habría necesidad de consumir un servicio web o de ir a la base de datos para garantizar la correcta ejecución de la prueba unitaria.

Hay 3 formas de inyectar las dependencias en el código, estas son:
  • En el constructor: El constructor de la clase acepta como parámetro de entrada el tipo de interfaz que requiere la clase para funcionar correctamente. Este es el método más utilizado y recomendado. De este modo cualquier clase que implemente dicha interfaz, puede inyectarse y la aplicación funcionará correctamente. 
  • En el método: El método definido recibe como parámetro la interfaz requerida para su funcionamiento. Esta es de gran utilidad, ya que permite inyectar la dependencia solo cuando es necesitada. 
  • En una propiedad: La propiedad definida sirve de inyectora de la dependencia. Esta se puede utilizar para cuando no se requiera definir la dependencia a nivel de constructor, sino solo, para cuando sea necesario inicializar el valor de la propiedad. Tener especial cuidado con esta forma de inyección pues puede generar errores en el caso que se vaya a utilizar la propiedad y esta no haya sido inicializada.


La inyección de dependencias se puede lograr por medio de un contenedor de IoC. Un contenedor de IoC se encarga de administrar las dependencias entre los objetos, tanto en la creación como en la destrucción de los mismos objetos durante su ciclo de vida dentro de la aplicación.

Existen varios contenedores de IoC, que permiten la inyección de las dependencias en las aplicaciones software, algunos de ellos son:
  • Autofac
  • UNIT
  • Ninject


Comentarios

Entradas populares de este blog

Clases POCO y Clases DTO

INTELLITEST

INTERFACES C#