2009-10-10 14 views
5

Una metafora che mi ha colpito durante la programmazione di sistemi non DI è "una persona che gioca con i suoi giocattoli". Una persona è un oggetto e i giocattoli della persona sono tutto ciò che crea, memorizza, inizializza e manipola. I giocattoli possono inviare eventi quando raggiungono un certo stato, ma non sanno nulla della persona che li usa; sono solo piccole scatole nere con interruttori di controllo che compongono le loro interfacce. La persona può ascoltare gli eventi dai giocattoli e rispondere manipolando le loro interfacce. La persona può fare qualsiasi cosa lui/lei vuole con i suoi giocattoli, ma lui/lei probabilmente non dovrebbe andare ingerenza con le loro interiora perché potrebbero rompere.Qual è una buona metafora per l'iniezione delle dipendenze?

Lo scempio che DI infrange sulla mia metafora è che trasforma i giocattoli in esseri coscienti che conoscono il loro proprietario, la persona che li usa. I giocattoli possono manipolare questa persona, ma la persona non sa nulla di come funzionano e non gliene importa nulla. La persona possiede solo i giocattoli e si aspetta che i giocattoli lo manipolino per la soddisfazione dei giocattoli.

WTF ?? Sembra orribile !!
Qual è una buona metafora mentale che hanno usato per pensare a come funzionano i sistemi DI?

risposta

3

Il SOLID motivational images è una buona fonte.

metaphor of the dependency injection principle

+0

Il collegamento è interrotto? –

+1

@DavidAndreoletti ringrazia per l'heads up. L'ho trovato di nuovo e ho caricato una copia in SO piuttosto che semplicemente il collegamento. – Finglas

1

I giocattoli non sono consapevoli. Lasciano semplicemente che la persona leghi dei pezzi di corda ai ganci, e quando accadono certe cose, i ganci si girano e la corda viene tirata, così la persona sa che qualcosa è successo.

2

Dal mio punto di vista la differenza tra DI e non-DI rispetto alla tua metafora è con sistemi non DI, ogni persona crea i propri giocattoli - devono sapere come realizzarli e possono usare solo i giocattoli essi fanno. Con DI, la persona usa i giocattoli che gli vengono dati. Non sanno come realizzarli, ma possono giocare con qualsiasi giocattolo che gli viene dato purché sappiano come si comporta il giocattolo.

10

Pensa a un gentiluomo e al suo maggiordomo. Il maggiordomo (il framework DI) fornisce al gentiluomo qualsiasi servizio (dipendenze esterne) di cui ha bisogno su richiesta (e alcuni, come il caffè del mattino, su "inizializzazione" :-)); il gentiluomo (la tua classe) consuma semplicemente i servizi e non gli importa da dove vengono, purché soddisfino i suoi requisiti (implementa una determinata interfaccia).

Oppure, se vuoi avvicinarti alla tua metafora, la tua classe è il bambino, la struttura di DI è la mamma ei giocattoli sono gli altri componenti. Al bambino non importa da dove vengono i giocattoli, purché possa giocare nel modo in cui vuole con loro.

0

Si tratta di samurai e armi. Prova a fare il check out: http://ninject.org/. Vai al personaggio "Visita il Dojo" per una metafora interessante. Non sono sicuro se questo è ciò che intendevi, ma è comunque creativo.

2

Legos.

Pensa a un blocco Lego come un componente software che espone una o più interfacce (i piccoli rilievi in ​​alto) e presenta uno o più setter o argomenti del costruttore (i fori sul fondo).

Quando acquisti una scatola di Lego, i blocchi non vengono premontati (cablati). Sono componenti indipendenti. Quindi li assemblate (collegandoli) collegando le interfacce (protuberanze) ai setter/costruttori (fori). Ogni blocco non conosce direttamente gli altri blocchi. Per assemblarli è necessario qualcosa di diverso dal blocco - ovvero tu (o main() o un file di configurazione Spring, ecc.).

lo so ... questo si rompe un po 'perché Lego in gran parte hanno un'interfaccia uniforme - ma funziona per me :-)

2

Io uso sistema informatico.Hai un blocco di sistema e tu (un DI) ti colleghi un monitor, una tastiera e un mouse. Il blocco di sistema sa solo che un monitor è un dispositivo DVI, ma non si preoccupa di quale monitor sia esattamente. Sa come usare il mouse USB, ma non sa o si preoccupa del tempo è un mouse ottico o rotante.

Tu - la struttura DI.
Blocco di sistema: è il sistema che viene servito.
Monitor/mouse/tastiera: servizi forniti da DI (voi) al blocco di sistema.

1

Una metafora di DI che mi è stato detto è stata quella di un lettore CD. Al giocatore non importa quale CD hai inserito; tuttavia, ogni CD che si inietta nel lettore fornisce funzionalità diverse in base a ciò che il giocatore richiede da esso.

Problemi correlati