7

ho cercato di conoscere l'iniezione di dipendenza e ho letto su e cercando di codificare un piccolo contenitore iniezione di dipendenza simile a questo: http://fabien.potencier.org/article/12/do-you-need-a-dependency-injection-containerDependency Injection Container - modello di fabbrica

L'unica cosa che mi confonde è questo :

Non è un contenitore di iniezione di dipendenza solo un'implementazione glorificata del modello di fabbrica?

Se è così, perché non chiamarlo così, perché la necessità di un termine di fantasia solo per confondere le cose.

Se non lo è, qualcuno può spiegare cosa mi manca qui?

+1

possibile duplicato del [Dependency Injection vs modello di fabbrica] (http: // StackOverflow. it/questions/557742/dependency-injection-vs-factory-pattern) – podiluska

+1

"Iniezione delle dipendenze" è un termine molto più ampio di "Contenitore dell'iniezione delle dipendenze". È facile vedere la differenza tra DI e una fabbrica, non è così facile vedere la differenza tra un contenitore DI e una fabbrica. Quindi non penso che sia una domanda doppia. – Russ

risposta

7

È necessario separare Iniezione di dipendenza e Inversione di controllo.

Iniezione di dipendenza è che si iniettano le dipendenze nella classe anziché lasciare che la classe stessa sia responsabile delle sue dipendenze.

Inversion Of Control è piuttosto che qualcosa prende il controllo dell'oggetto e della sua durata. In questo caso spetta al contenitore decidere quando e come un oggetto deve essere creato e smaltito.

Il modello di fabbrica riguarda la creazione di un nuovo oggetto per ciascuna chiamata. Lo stesso schema non dice nulla su come devono essere create le dipendenze.

Ecco perché è possibile configurare diverse durate e utilizzare contenitori figlio per controllare oggetti con una durata limitata.

Ho scritto un articolo su questo qui: http://www.codeproject.com/Articles/386164/Get-injected-into-the-world-of-inverted-dependenci

O se volete vedere con altri esempi: http://www.codeproject.com/Articles/440665/Having-fun-with-Griffin-Container

Problemi correlati