Piense en ello como una realización del patrón de "Inversión de control". Supongo que tu problema es que estás acostumbrado, no te das cuenta de que es así de simple.
Comencemos por el principio.
En los primeros días los programas seguían una ruta determinada a través del código. El orden de las funciones llamadas fue dado por el programador.
En programas interactivos, p. en su mayoría CUALQUIER programa, no se puede decir, a qué función se llama y en qué momento. Solo mira una GUI o sitio web. No puede decir a qué hora se hace clic en el botón o enlace. Entonces el "control" de lo que está pasando ya no está en el programa, está en una fuente externa. El "control" ha sido invertido. La función ya no es "actuar" sino "escuchar". Piensa en el principio de Hollywood: "No nos llames, te llamamos". Un oyente es un buen ejemplo para la realización de este patrón.
IoC se realiza mediante funciones o "métodos" en el "mundo orientado a objetos" de hoy.
"inyección de dependencias" ahora significa lo mismo, pero no para los "métodos", que hacer algo, pero para los "objetos", que Retención de datos.
Los datos ya no forman parte del objeto que los contiene. Se "inyecta" en el objeto en tiempo de ejecución. Para permanecer en Hollywood, piense en una estrella de cine, juegue al golf para hablar sobre el negocio, pero para mantenerse en forma, se humilla, minimizando su peso muscular y, por lo tanto, solo puede llevar un palo a la vez.
Por lo tanto, en el campo de golf su juego dependería en gran medida del club que esté llevando.
Por suerte para ella, hay caddies, que llevan una gran cantidad de clubes a la vez, y también tienen el conocimiento de qué club usar y en qué momento. Ahora ella es independiente de su posibilidad limitada de llevar palos de golf. "No piense en un club de concreto para usar, los conocemos todos y le damos el correcto en el momento adecuado".
La estrella de la película es el objeto y los palos de golf son los miembros del objeto. Eso es inyección de dependencia.
Agradable. Para ampliarlo, el jugador conoce los CD en general, cómo leerlos, etc. (la interfaz), pero no sabe nada sobre un álbum específico (implementación). – ctacke
¡Gran analogía! Tendré que recordar este. – chills42
Excelente. Va en mi caja de herramientas. – Will