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
Publicar un comentario