Última Actualización marzo 2nd, 2021 5:21 PM
Ago 29, 2019 NGuerrero Metodologías, Programacion 0
El patrón de inyección de dependencia siempre ha sido uno de los conceptos que cuesta entender en el mundo del desarrollo de software sobre todo a la gente que esta empezando. ¿Para qué sirve este patrón de diseño y cual es su utilizad? Normalmente cuando nosotros programamos en el día a día con la programación orientada a objeto nos encontramos construyendo objetos y relacionando objetos utilizando dependencias.
Por ejemplo podemos tener un programa principal que use un sencillo servicio de impresión para imprimir un documento.
Utilizamos un programa main e imprimimos:
Hasta ahí no tiene nada de especial y veremos impreso el resultado en la consola:
Sin embargo lo lógico es que este programa divida un poco más sus responsabilidades y este compuesto de varios servicios algo como lo siguiente:
Hasta aquí todo es bastante razonable y lo que conseguimos es que nuestro servicio de impresión dependa de otros servicios y las responsabilidades queden mas claras. Acabamos de generar dependencias al Servicio de impresión . El código sería algo como lo siguiente.
El resultado en la consola será el mismo solo que hemos dividido mejor.
Se puede realizar la misma operación inyectando las dependencias al ServicioImpresión y que no sea él el que tenga que definirlas en el constructor.
Este parece en principio un cambio sin importancia, el código quedaría:
El resultado sigue siendo el mismo. Acabamos de inyectar las dependencias en el servicio desde nuestro programa main . ¿Qué ventajas aporta esto? . La realidad es que en principio parece que ninguna . Pero hay algo que ha cambiado ya no es el propio servicio el responsable de definir sus dependencias sino que lo es el programa principal. Esto abre las puertas a la extensibilidad. Es decir ¿tenemos nosotros siempre que inyectar las mismas dependencias al servicio?. La respuesta parece obvia… claro que sí están ya definidas. Sin embargo la respuesta es NO , nosotros podemos cambiar el tipo de dependencia que inyectamos , simplemente extendiendo una de nuestras clases y cambiando el comportamiento, vamos a verlo.
Acabamos de crear una clase que extiende ServicioEnvio y añade una funcionalidad adicional de log que hace un “log” del correo que enviamos . Ahora es tan sencillo como decirle al programa principal que cuando inyecte la dependencia no inyecte el ServicioEnvio sino el ServicioEnvioAspecto de esta forma habremos cambiado el comportamiento de forma considerable.
El resultado en la consola será:
Acabamos de modificar el comportamiento de nuestro programa de forma significativa gracias al uso del concepto de inyección de dependencia.
La inyección de dependencia nos permite inyectar otras clases y añadir funcionalidad transversal a medida. Este patrón de diseño es el que abre la puerta a frameworks como Spring utilizando el concepto de inyección de dependencia de una forma más avanzada. En estos framework los aspectos que se añaden a nuestras clases son múltiples y la complejidad alta.
La importancia del patrón de inyección de dependencia es hoy clave en la mayoría de los frameworks.
Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.
Powered by Facebook Comments
Mar 02, 2021 0
Mar 01, 2021 0
Feb 27, 2021 0
Feb 26, 2021 0
Feb 27, 2021 0
Feb 18, 2021 0
Feb 17, 2021 0
Feb 13, 2021 0
Mar 02, 2021 0
Feb 26, 2021 0
Feb 25, 2021 0
Feb 24, 2021 0
Feb 23, 2021 0