[MUSICA]
Ora diamo un'occhiata penetrante all'iniezione di dipendenza.
Cos' è esattamente l'iniezione di dipendenza e in che modo è rilevante per Angular?
Parliamone dopo.
Quindi, cos'è esattamente l'iniezione di dipendenza?
L' iniezione di dipendenza è un modello di progettazione software.
Questo è un modello utile per l'implementazione di applicazioni in cui
si dispone di un oggetto che dipende da un altro oggetto in modo efficiente.
Ora l'iniezione di dipendenza, come ci rendiamo conto, ha due parti.
Dipendenza e iniezione.
Parliamo prima della dipendenza.
Dipendenza significa che il tuo oggetto dipende da un altro oggetto.
Quindi, questo è il motivo per cui questa è una dipendenza tra il tuo oggetto e un altro oggetto.
L' iniezione sta parlando di passare la dipendenza a un oggetto dipendente.
Quindi, se hai un oggetto, se c'è un meccanismo che
ti permette di essere in grado di prendere un oggetto e quindi renderlo disponibile per un secondo oggetto, in modo
che l'altro oggetto possa utilizzarlo senza essere consapevole
esattamente di come il primo oggetto viene implementato o cancellato.
Quindi, in questo caso l'oggetto che è dipendente non è a conoscenza
o non ha bisogno di preoccuparsi di come viene implementato l'altro oggetto.
Ha solo bisogno di farne uso, all'interno del tuo oggetto, ovunque si trovi.
Dependency Injection è stata coniata da Martin Fowler nel 2004.
Ed è un utile design software che sottolinea ulteriormente la dipendenza.
Se un oggetto dipende da un altro oggetto,
ci sono tre modi in cui può accedere all'altro oggetto.
1, Può creare l'oggetto dipendente stesso utilizzando il nuovo operatore
che hai visto questo nel caso delle classi.
Quindi, ad esempio, se hai bisogno di un nuovo oggetto di un tipo di classe,
allora crei quell'oggetto usando il nuovo all'interno dei linguaggi, come C ++ o
Java, e persino scrivi script.
Quindi, puoi fare uso di quel particolare oggetto.
L' altro modo è dichiarare l'altro oggetto come variabile globale e
quindi si cerca la dipendenza utilizzando la variabile globale.
Il terzo modo per farlo è avere la dipendenza passata in te,
ovunque sia necessaria.
Quindi, se sei dipendente da qualcos'altro, allora qualcos'altro
ti verrà iniettato da un sistema ovunque sia richiesto.
Quindi, ora la terza opzione ti dà molta flessibilità nel modo in
cui il software è progettato.
Quindi in questo approccio, nel terzo approccio,
non c'è bisogno di una codifica rigida dopo la dipendenza.
Nei primi due approcci, la dipendenza è codificata in là,
perché è necessario essere pienamente consapevoli di come si crea
l'oggetto da cui si dipende, all'interno del proprio oggetto.
Nel terzo oggetto,
poiché l'altro oggetto viene iniettato in te ogni volta che ne
hai bisogno, non ti interessa davvero come viene creato, purché tu abbia accesso ad esso.
E l'altro vantaggio che questo approccio comporta è che
facilita la facilità di testare la tua applicazione perché quando hai
bisogno di un oggetto da cui sei dipendente, invece di passare
l'oggetto dipendente potresti persino creare un oggetto finto del tipo e
quindi passarlo in per testare il tuo oggetto specifico.
Questa separazione tra l'oggetto dipendente e l'altro oggetto è molto,
molto utile come ci rendiamo conto nello svolgimento dei test.
Ne discuteremo brevemente quando esamineremo i test angolari più avanti in questo corso.
Dependency Injection porta circa quattro diversi ruoli che dobbiamo considerare.
Innanzitutto è il servizio che userai all'interno del
tuo componente per esempio e che deve essere iniettato.
Secondo il client che dipende dal servizio
che in questo caso è il tuo componente.
In terzo luogo, l'interfaccia, una volta iniettata come si fa a fare uso di quel servizio.
E infine l'iniettore, l'entità che è responsabile dell'
iniezione di quell'oggetto nel tuo oggetto.
Come ti renderai conto molto presto, l'
iniezione di dipendenza espressa angolare molto nel modo in cui è implementata.
Quindi questo è ciò che facilita la separazione di una logica aziendale
dalla costruzione delle dipendenze in modo da poter scrivere
la logica aziendale nell'oggetto indipendente e quindi iniettarle ovunque sia richiesta.
E la dipendenza è passata nell'oggetto che lo sta consumando
ovunque sia necessario.
Ora, come si prende cura di questa iniezione?
Questa iniezione è curata dal sottosistema di iniezione angolare.
Il sottosistema di iniezione angolare si occupa della creazione di questi servizi e
quindi li inietta nel componente ovunque ne abbiate bisogno.
Quindi si prende anche cura di risolvere le dipendenze e anche,
fornendo quegli oggetti ad altri componenti che richiedono questi oggetti.
Quindi il sottosistema di iniettori angolari fornisce tutti questi meccanismi
per consentire questo.
Come funziona davvero?
Lo vedremo nell'esercizio che segue,
dove useremo un servizio che creeremo nei componenti
che abbiamo progettato per la nostra applicazione angolare.
[ MUSIC]