El Control de Inversión solo aparece cuando trabajas con Interfaces en Visual Studio .NET
Hoy estoy con la pluma, vamos, que se sale
Si desarrollas software definiendo tus propias intefaces para implementarlas en tu propio modelo de objetos, que encapsula aquella funcionalidad orientada a soportar las reglas del negocio por las cuales estas allà sentado al frente de una PC, dizque currando, pues experimentaras en carne propia la delicia de los beneficios de un código minimamente ordenado y entendible por cualquier ser humano simple, común y silvestre.
Desarrollar software es aquella fantástica oportunidad que te brinda la vida para dejar obsoleta una idea de hacer las cosas -que antes fue la hostia- y evolucionar a la siguiente preciosa idea -que sera la leche- por unas semanas mas
Pero en todo ese código -que picas y picas casi encorvado sobre el teclado que gime sus gritos al sonar de cada tecla- veras que el uso de interfaces, para maquetar tu modelo de objetos, siempre fue la mejor decisión de todas.
Una decisión que contrasta de forma inversamente proporcional con la forma tradicional de hacerlo, en función a la variable: que tan preparado estas para el cambio.
Un cambio que ha de soportar TU código y que si NO haz utilizado una técnica que facilite saber como el entorno interactua con tu modelo de objetos, todo sera mas complicado al momento que venga el próximo evolutivo.
Y solo te quedara exclamar a voz en cuello, con la yugular casi a punto de reventar: “¡¡¡…Esos cambios son muy drasticos…!!!”.
En fin, el modelo de objetos que haz desarrollado orientado al producto de software que vienes implementando siempre deberÃa ser desplegado en dos assemblies, uno de ellos SOLO llena de interfaces y la otra con tus propias clases, asumiendo que estas son, la implementación por defecto, de aquella lógica que TU haz abstraÃdo a nivel SOLO de comportamientos y la interacción con el entorno.
Entonces, cuando empiezas a manipular solo interfaces orientadas a ese producto de software ya deberÃas sentirte en un nivel diferente al común de los mortales
Y es allÃ, en la manipulación de aquellas interfaces, dizque clasesillas esqueleticas y duplicadoras de esfuerzo, que encuentras la luz: el omnipresente Control de Inversión.
Un Control de Inversión que rompe la necesidad de hacer new de las class de tu modelo de objetos, entregando esa competencia a una interfaz de orden superior que se implementara como una factory, posteriormente.
La verdad verdadera acaba de ser revelada ante vuestros ojos.
Romper el vinculo fuerte entre dos assemblies, a través de un tercero que define solo interfaces para que ese castillo de naipes que vienes edificando tenga la capacidad de ser acoplable.
NO todas las cartas utilizadas para ese castillo deberÃan ser siempre de la misma marca, cuando tengas que instalar aquello en algún cliente donde encontraras una realidad diferente a la que habÃas imaginado en TU diseño.
O del mismo modo, cuando construÃas estructuras extrañas con tu lego NO todas las futuras piezas tendrÃan que venir del misma tienda, donde compraste la primera, si solo cumpliesen la regla necesaria para acoplarse con la otra pieza.
La teorÃa es por demás bella y maravillosa, contrastandose siempre -casi contranatura- frente a la patética y cruda realidad.
La cruda realidad esta compuesta, allà en las empresas, con piezas de diferentes tipos y múltiples proveedores. Facilitar el acoplamientos de aquellas piezas en el producto de software que debes implementar ahora, es el reto por el cual las interfaces tienen su razón de ser y logran existir.
Amen