Inversión de control (IoC)

Implementar el principio de inversión de dependencia (DIP) sin realizar inversión de control puede resultar en un trabajo incompleto. Vamos a terminar con las dependencias reales en nuestro código mediante la inyección de clases colaboradoras pero solamente en el código de alto nivel. Esto aun nos deja en un mal lugar, aquí es donde la inversión de control tiene lugar.
Echemos una mirada al siguiente código:
Como podemos ver, las diferentes sentencias new aun son necesarias en este nivel.
Ahora, este otro luce mucho más limpio. Lo que estamos viendo aquí es el uso del Common Service Locator, que es una interfaz común que soporta todos los diferentes contenedores de inversión de control. Así que aquí tampoco hay una dependencia de un contenedor específico de Inversión de control. Un contenedor apropiado puede resolver cualquier dependencia que una clase solicite e inyectárselas al crear una nueva instancia de ella. En otras palabras, ha realizado automáticamente lo que hubiéramos tenido que hacer manualmente.
Viendo este último ejemplo de código notamos que en realidad es necesario configurar el contenedor de Inversión de control. Esto es específico para el contenedor que utilicemos. En este ejemplo, vemos al StructureMap. Lo bueno de esta configuración, es que este es el único lugar del código en donde definimos nuestras dependencias actuales. Este es el único lugar en el que tenemos que conocer nuestras diferentes implementaciones.
Muchos contenedores de Inversión de control soportan también configuraciones vía XML pero hay que tener cuidado ya se pierde la seguridad de los tipos y el apoyo del entorno para la refactorización.

0 comentarios:

Publicar un comentario

Muchas gracias por leer el post y comentarlo.

 
Copyright 2009 Programación SOLIDa
BloggerTheme by BloggerThemes | Design by 9thsphere