Bentornati.
Abbiamo creato le classi motore e auto e il modulo app.
Poiché stiamo lavorando in un ambiente non Android, si tratta di puro codice Kotlin.
Dobbiamo creare un ponte tra il modulo app e queste classi.
Creare quindi una nuova interfaccia chiamata App Component.
Ancora una volta, visto che stiamo lavorando in un ambiente Android, più
avanti vedremo che questa interfaccia non verrà utilizzata nei progetti Android.
Ok, ma voglio che vi concentriate su di me per imparare tutti i
possibili codici che potreste incontrare o vedere in seguito nei vostri progetti.
Contrassegnerò questo passaggio di interfaccia, singleton e componente all'interno del
parametro modules, il modulo dell'applicazione che abbiamo creato in precedenza.
Spieghiamo cosa abbiamo fatto prima.
L'annotazione Singleton assicura che questo componente fornisca istanze con scope singleton delle
sue dipendenze, in questo caso un oggetto fornito da questo componente.
Ad esempio, il componente dell'app avrà una sola istanza per tutta
la durata del componente, di cui abbiamo parlato nel modulo precedente.
Ora quel componente è una nuova annotazione.
L'annotazione del componente definisce un componente pugnale.
Un componente è come un ponte tra i moduli, che forniscono
le dipendenze, e le classi che hanno bisogno di tali dipendenze.
Di nuovo, ragazzi, scrivo questa nota perché è molto importante.
Di nuovo, ragazzi, voglio che scriviate questi appunti perché sono molto
importanti e vi aiutano a memorizzare e a padroneggiare questi argomenti.
E il master hilt di un componente è come un ponte tra i moduli che forniscono le dipendenze.
I moduli forniscono le dipendenze e le classi che ne hanno bisogno.
Ok.
Quindi è un ponte tra il modulo dell'applicazione e le classi di auto
e motore, un componente dagger crea e gestisce il grafo delle dipendenze.
Sa come risolvere le dipendenze cercando nelle classi di annotazione del modulo i
metodi di annotazione forniti e utilizzando i costruttori annotati con l'annotazione inject.
Il parametro modules indica a dagger o hilt quali moduli utilizzare per le dipendenze.
L'interfaccia di questo componente dell'applicazione utilizzerà il modulo dell'applicazione per risolvere le dipendenze come il motore e l'auto.
L'interfaccia del componente app definisce l'API per recuperare le dipendenze dal grafo delle dipendenze di dagger.
I metodi di questa interfaccia espongono gli oggetti che possono essere recuperati dal grafo delle dipendenze.
Creerò una funzione chiamata get car, che restituirà un oggetto auto.
Il metodo get car indica a dagger o hilt che
questo componente deve fornire un'istanza di auto quando viene richiesta.
Quando viene richiamato get car, il componente dagger risolve tutte le dipendenze necessarie per car, ad esempio.
Motore.
Se torniamo indietro, possiamo vedere che per ottenere o fornire un'auto, dobbiamo prima
fornire un motore, che poi costruisce un'istanza di auto usando il grafo
delle dipendenze e restituisce l'istanza di auto come componente di riepilogo rapido.
Definisce il ponte tra i fornitori di dipendenze, ad esempio il modulo e i moduli dei consumatori,
e specifica i moduli, come il modulo app, che il componente deve usare per risolvere le dipendenze.
Il singleton assicura che la stessa istanza delle dipendenze del componente sia riutilizzata durante il suo ciclo
di vita e la funzione get car espone l'oggetto car come dipendenza che può essere recuperata.