Bentornati.
Continuiamo con il repository.
E all'interno di questo pacchetto creare una nuova classe Kotlin chiamata implementazione del Weather Repository.
Questa classe si estende dall'interfaccia del Weather Repository.
Voglio che vi concentriate con me perché questa è una lezione molto importante e contiene molte informazioni.
Questa è l'implementazione del repository meteo.
La classe vera e propria che contiene la logica per il recupero dei dati meteo e il repository meteo
significa che questa classe implementa l'interfaccia del repository meteo, quindi deve definire tutti i metodi di tale interfaccia.
Non implementerò ora i membri, che sono questi due metodi.
Si tratta di dati fittizi.
I dati meteo di Private Val sono uguali a quelli della mappa di e creiamo alcuni dati fittizi.
Ed eccoci qui.
Questo è il nostro dato fittizio, che è un dato meteorologico.
Ok.
Ora permettetemi di implementare i membri.
Le due funzioni Delta più enter per implementare i membri, get weather for location e get all locations.
Questi sono i metodi dell'interfaccia del deposito meteo.
Fare clic su OK ed ecco che si parte.
Ora dobbiamo tornare a ottenere il tempo per la posizione qui.
Restituire i dati meteo per una determinata località Restituire.
Info meteo.
Posizione zero e sconosciuta.
Questa funzione restituisce informazioni per la posizione data o per il valore predefinito, che è zero o sconosciuto.
Abbiamo quindi due stati.
O si va a prendere la località e si forniscono le informazioni sul tempo all'interno di questa località, o
si va a restituire un valore predefinito che è temperatura zero e descrizione sconosciuta per una data località.
Ad esempio, abbiamo New York, Londra, Tokyo, Parigi e Sydney.
Se specifico Colorado o questo non è incluso nei nostri dati fittizi, quindi restituisce un valore predefinito.
Località Colorado temperatura zero e descrizione sconosciuta perché
non è elencata nei nostri dati fittizi.
Ok.
La seconda cosa che dobbiamo restituire è ottenere tutte le posizioni, sia che si tratti di dati, sia che si tratti di chiavi puntiformi, sia che si tratti di un elenco.
Quindi dobbiamo ottenere tutte le posizioni.
Mi riferisco ai dati meteo e all'ottenimento di tutte le chiavi.
Queste sono le chiavi e questi sono i valori.
Ok, sto mappando New York su questo oggetto di informazioni meteo.
Questa è la chiave e questo è il valore.
Qui ricevo tutte le chiavi.
Quindi, New York, Londra, Tokyo, Parigi e Sydney vanno bene.
L'ultima cosa da specificare è l'implementazione del repository meteo.
Aggiungo una nuova annotazione chiamata iniettare il costruttore Alt+.
Immettere per importare l'oggetto da Javax.
Iniettare il punto.
Iniettare la classe.
Iniettare il costruttore.
Fa parte di hilt o dagger e indica il sistema di iniezione delle dipendenze.
Come creare un'istanza di classe.
Come funziona.
In parole povere si sta dicendo Ehi Hilde, puoi creare questa classe automaticamente usando questo costruttore.
Quindi, quando si usa il costruttore inject per rendere Hilde in grado di fornire
questa classe come dipendenza senza doverla impostare manualmente come un modulo, significa che
Hilde può iniettare l'implementazione del repository ovunque, l'interfaccia, se il repository è necessario.
Non è necessario scrivere metodi provides o binds in un modulo Hilde, a meno che non si stia facendo qualcosa di personalizzato.
Un'ultima cosa.
È necessario menzionarlo qui.
Sotto il cofano, quando Hilde vede l'annotazione inject constructor, aggiunge questa classe al grafo delle dipendenze.
Sa come costruirlo automaticamente e, se ha dei
parametri del costruttore, hilt risolverà anche queste dipendenze.
Quindi, per esempio, se questo meteo nel nostro repository ha bisogno del
servizio API privato val e creiamo una classe di servizio API meteo.
L'implementazione di questo repository meteo dipende dal servizio API, ma grazie per il suggerimento.
Se si utilizza il costruttore di inject, possiamo utilizzare
direttamente e automaticamente hilt e fornirci il servizio API.
Ogni volta che si usa il costruttore inject, hilt aggiungerà questa classe al grafo delle dipendenze.
Sa come costruirlo automaticamente e se il costruttore ha
dei parametri, Hilt Health risolverà anche queste dipendenze.
Quindi hilt cercherà di capire come fornire il servizio
API meteo e iniettarlo automaticamente nell'implementazione del repository meteo.
Ma in questo esempio e in questa applicazione, non useremo parametri all'interno di questo costruttore.
Hilt fornirà l'implementazione del repository meteo.
Ok.
Questa è l'implementazione del nostro repository meteo.
Abbiamo creato dati fittizi a scopo dimostrativo.
Abbiamo implementato i due metodi ereditati da Weather Repository e forniamo il meteo
per quei dati usando la coppia chiave-valore e il valore predefinito qui.
L'ultima cosa e l'ultimo passo che abbiamo fatto è stato aggiungere il costruttore inject, che
dice a hilt di fornire questa classe come dipendenza, senza bisogno di una configurazione manuale.