Bentornati.
Ora creeremo un secondo passo nell'implementazione dell'iniezione di dipendenza.
Qui abbiamo creato l'applicazione meteo.
Questa è la prima parte dell'implementazione della dependency injection di Hilt.
Ora creeremo il modulo, creando una nuova classe
all'interno del pacchetto dependency injection, denominata modulo repository.
Rendiamo questa classe astratta.
E poi faremo un'immersione profonda nel modulo del repository di classi astratte.
E qui annotiamo questa classe con il modulo e la installiamo nella classe singleton Un modulo di hilt viene
usato per dire a hilt come fornire le dipendenze che non può capire da solo, come le interfacce.
Questo si chiama modulo repository e aiuta hilt a sapere come legare le interfacce alle loro implementazioni.
Installazione dell'applicazione L'annotazione indica a Hilt dove verrà installato il modulo.
Componente singleton qui.
Classe componente singleton.
Il binding di questo modulo resterà in vita fino a quando resterà in vita l'intera applicazione.
Tutte le dipendenze fornite saranno condivise.
Singleton in tutta l'applicazione.
Singleton significa una sola istanza in tutta l'applicazione.
È come dire di applicare queste regole a tutta l'applicazione per l'intera durata dell'applicazione.
Voglio che scriviate queste note, dicendo che l'annotazione del
modulo contrassegna una classe come fornitore di dipendenze.
Installare in scoop vive per tutti i dati e singleton solo un'istanza condivisa a livello di applicazione.
All'interno di questo modulo creeremo una funzione astratta chiamata bind.
Se repository questa funzione astratta o bind se repository si estende
da se repository e prende come parametro un se repository.
Implementazione.
Contrassegnare questo metodo con l'annotazione bind e singleton.
Mi spiego meglio.
Cosa sono queste annotazioni? L'annotazione Binds, utilizzata quando
si fornisce un'implementazione per un'interfaccia, indica a Hilt.
Ogni volta che qualcuno chiede un repository, gli si fornisce
un'istanza dell'implementazione del repository e l'annotazione singleton assicura che venga
creata e condivisa nell'applicazione una sola istanza dell'implementazione del repository.
Perché usare i binds e non fornire l'annotazione provides? È
possibile utilizzarle e le abbiamo viste nei video precedenti.
Ma qui stiamo usando l'annotazione binds.
Utilizzare i legami.
Quando si dispone già di una classe di implementazione concreta, è sufficiente collegarla a un'interfaccia.
Utilizzare l'annotazione provides quando è necessario costruire l'oggetto
da soli, ad esempio passando manualmente i parametri.
In questo caso, usiamo binds perché abbiamo già la classe di implementazione concreta,
che è l'implementazione del repository meteo, e dobbiamo solo collegarla a un'interfaccia.
Ok.
Quale elsa.
Ora capite.
Capire che se un repository e l'implementazione è se
l'implementazione del repository e lo scoop singleton va bene.
Quindi, ancora una volta i ragazzi capiscono che l'interfaccia è se repository.
L'implementazione è se l'implementazione del repository.
E lo scoop è a livello di singola applicazione.
Quindi vive finché l'app è in vita.
Hilt inietterà automaticamente un'istanza dell'implementazione del repository.
Più avanti, quando configureremo e scriveremo il nostro ViewModel, vedremo perché hilt è molto importante
e perché usiamo questo modulo per fornire una singleton e una sola istanza del repository.