Pregunta

Una metáfora que se me quedó grabada al programar sistemas que no son DI es "una persona jugando con sus juguetes".Una persona es un objeto y sus juguetes son cualquier cosa que ese objeto cree, almacene, inicialice y manipule.Los juguetes pueden enviar eventos cuando alcanzan un cierto estado, pero no saben nada sobre la persona que los usa;son simplemente pequeñas cajas negras con interruptores de control que conforman sus interfaces.La persona puede escuchar eventos de los juguetes y responder manipulando sus interfaces.La persona puede hacer lo que quiera con sus juguetes, pero probablemente no debería meterse con sus entrañas porque podrían romperse.

Los estragos que la DI causa en mi metáfora es que convierte los juguetes en seres conscientes que conocen a su dueño, la persona que los usa.Los juguetes pueden manipular a esta persona, pero la persona no sabe cómo funcionan y ni siquiera le importa.La persona simplemente es dueña de los juguetes y espera que los juguetes la manipulen a su propia satisfacción.

WTF??¡¡Eso suena horrible!!
¿Cuál es una buena metáfora mental que han estado usando para pensar en cómo funcionan los sistemas DI?

¿Fue útil?

Solución

El sólido imágenes de motivación son una buena fuente.

metáfora del principio de inyección de dependencias

Otros consejos

Piense un caballero y su mayordomo. El mayordomo (el marco DI) proporciona al caballero cualquiera de los servicios externos (dependencias) que necesita a la demanda (y algunos, como el café de la mañana, al :-) "inicialización"); el caballero (la clase) solo consume los servicios y no le importa de dónde vienen, siempre y cuando cumplan con sus requisitos (aplicar cierta interfaz).

O si desea hacerlo más cercano a su metáfora, su clase es el niño, el marco DI es la madre, y los juguetes son los otros componentes. El chico no le importa donde los juguetes vienen, todo el tiempo que puede jugar de la manera que quiera con ellos.

Desde mi punto de vista la diferencia entre DI y no DI con respecto a su metáfora es con sistemas no-DI, cada persona hace sus propios juguetes - tienen que saber cómo hacer que ellos y que sólo puede usar los juguetes que hacer. Con DI, la persona que utiliza los juguetes que se les da. Ellos no saben cómo hacerlas, pero pueden jugar con los juguetes que se les da, siempre y cuando ellos saben cómo se comporta el juguete.

Legos.

Piense en un bloque de Lego como un componente de software que expone una o más interfaces (las pequeñas protuberancias en la parte superior) y tiene uno o más emisores o argumentos de constructor (los agujeros en la parte inferior).

Cuando usted compra una caja con piezas de Lego, los bloques no vienen pre-ensamblada (cableada). Ellos son componentes independientes. A continuación, montar ellos (conectarlos) mediante la conexión de interfaces (golpes) a los emisores / constructores (agujeros). Cada bloque no sabe nada de los otros bloques directamente. Se requiere algo más que el bloque para ensamblarlos - (. o main () o un archivo de configuración de primavera, etc). es decir que

Lo sé ... Esto rompe un poco porque Legos en gran medida tiene una interfaz uniforme - pero funciona para mí: -)

Utilizo sistema informático.Tiene un bloque de sistema y usted (un DI) le conecta un monitor, un teclado y un mouse.El bloque del sistema sólo sabe que un monitor es un dispositivo DVI, pero no le importa qué monitor es exactamente.Sabe cómo utilizar un ratón USB, pero no sabe ni le importa si es un ratón óptico o de bola.

Usted: el marco DI.
Bloque del sistema: ¿se está dando servicio al sistema?
Monitor/ratón/teclado: servicios proporcionados por DI (usted) al bloque del sistema.

Los juguetes no son conscientes. Ellos simplemente dejar que los bits persona lazo de cuerda para ganchos, y cuando ocurren ciertas cosas, los ganchos a su vez y la cadena consigue tirado en, por lo que la persona sabe algo sucedió.

Una metáfora DI que me dijeron que era para relacionarla con era la de un reproductor de CD. El jugador no le importa lo que puso en CD; Sin embargo, cada CD se inyecta en el reproductor proporciona una funcionalidad diferente en función de lo que el jugador requiere de ella.

Se trata de Samurais y armas. Trate de ver las ninject: http://ninject.org/ . Ir al carácter "Visita el Dojo" de una metáfora interesante. No estoy seguro si esto es lo que quería decir pero es creativo, no obstante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top