WEBVTT

1
00:01.680 --> 00:02.600
Bentornati.

2
00:03.080 --> 00:08.600
Ora creeremo un secondo passo
nell'implementazione dell'iniezione di
dipendenza.

3
00:08.920 --> 00:11.200
Qui abbiamo creato l'applicazione meteo.

4
00:11.200 --> 00:16.600
Questa è la prima parte
dell'implementazione della dependency
injection di Hilt.

5
00:16.760 --> 00:22.960
Ora creeremo il modulo, creando una nuova
classe

6
00:23.200 --> 00:26.760
all'interno del pacchetto dependency
injection, denominata modulo repository.

7
00:27.680 --> 00:30.240
Rendiamo questa classe astratta.

8
00:30.240 --> 00:35.840
E poi faremo un'immersione profonda nel
modulo del repository di classi astratte.

9
00:35.960 --> 00:48.280
E qui annotiamo questa classe con il
modulo e la installiamo nella classe
singleton Un modulo di hilt viene

10
00:48.360 --> 00:56.560
usato per dire a hilt come fornire le
dipendenze che non può capire da solo,
come le interfacce.

11
00:56.560 --> 01:06.840
Questo si chiama modulo repository e aiuta
hilt a sapere come legare le interfacce
alle loro implementazioni.

12
01:07.000 --> 01:14.310
Installazione dell'applicazione
L'annotazione indica a Hilt dove verrà
installato il modulo.

13
01:14.710 --> 01:17.230
Componente singleton qui.

14
01:17.270 --> 01:19.830
Classe componente singleton.

15
01:19.870 --> 01:26.270
Il binding di questo modulo resterà in
vita fino a quando resterà in vita
l'intera applicazione.

16
01:26.470 --> 01:29.870
Tutte le dipendenze fornite saranno
condivise.

17
01:29.910 --> 01:32.150
Singleton in tutta l'applicazione.

18
01:32.190 --> 01:37.230
Singleton significa una sola istanza in
tutta l'applicazione.

19
01:37.670 --> 01:44.830
È come dire di applicare queste regole a
tutta l'applicazione per l'intera durata
dell'applicazione.

20
01:44.990 --> 01:52.550
Voglio che scriviate queste note, dicendo
che l'annotazione del

21
01:52.550 --> 01:53.910
modulo contrassegna una classe come
fornitore di dipendenze.

22
01:53.910 --> 02:04.870
Installare in scoop vive per tutti i dati
e singleton solo un'istanza condivisa a
livello di applicazione.

23
02:04.990 --> 02:12.950
All'interno di questo modulo creeremo una
funzione astratta chiamata bind.

24
02:12.990 --> 02:22.940
Se repository questa funzione astratta o
bind se repository si estende

25
02:22.940 --> 02:27.340
da se repository e prende come parametro
un se repository.

26
02:27.340 --> 02:28.620
Implementazione.

27
02:28.620 --> 02:34.940
Contrassegnare questo metodo con
l'annotazione bind e singleton.

28
02:34.940 --> 02:36.180
Mi spiego meglio.

29
02:36.180 --> 02:38.420
Cosa sono queste annotazioni?
L'annotazione Binds, utilizzata quando

30
02:38.420 --> 02:46.540
si fornisce un'implementazione per
un'interfaccia, indica a Hilt.

31
02:46.580 --> 02:54.620
Ogni volta che qualcuno chiede un
repository, gli si fornisce

32
02:54.620 --> 03:02.700
un'istanza dell'implementazione del
repository e l'annotazione singleton
assicura che venga

33
03:02.700 --> 03:05.860
creata e condivisa nell'applicazione una
sola istanza dell'implementazione del
repository.

34
03:05.900 --> 03:10.380
Perché usare i binds e non fornire
l'annotazione provides? È

35
03:10.380 --> 03:13.500
possibile utilizzarle e le abbiamo viste
nei video precedenti.

36
03:13.500 --> 03:17.140
Ma qui stiamo usando l'annotazione binds.

37
03:17.180 --> 03:17.980
Utilizzare i legami.

38
03:17.980 --> 03:25.580
Quando si dispone già di una classe di
implementazione concreta, è sufficiente
collegarla a un'interfaccia.

39
03:25.580 --> 03:32.260
Utilizzare l'annotazione provides quando è
necessario costruire l'oggetto

40
03:32.260 --> 03:32.980
da soli, ad esempio passando manualmente i
parametri.

41
03:32.980 --> 03:39.220
In questo caso, usiamo binds perché
abbiamo già la classe di implementazione
concreta,

42
03:39.260 --> 03:44.140
che è l'implementazione del repository
meteo, e dobbiamo solo collegarla a
un'interfaccia.

43
03:44.180 --> 03:44.700
Ok.

44
03:45.060 --> 03:45.980
Quale elsa.

45
03:46.020 --> 03:47.700
Ora capite.

46
03:47.740 --> 03:56.460
Capire che se un repository e
l'implementazione è se

47
03:56.460 --> 03:58.660
l'implementazione del repository e lo
scoop singleton va bene.

48
03:58.820 --> 04:04.060
Quindi, ancora una volta i ragazzi
capiscono che l'interfaccia è se
repository.

49
04:04.060 --> 04:08.060
L'implementazione è se l'implementazione
del repository.

50
04:08.060 --> 04:11.260
E lo scoop è a livello di singola
applicazione.

51
04:11.260 --> 04:14.260
Quindi vive finché l'app è in vita.

52
04:14.300 --> 04:19.180
Hilt inietterà automaticamente un'istanza
dell'implementazione del repository.

53
04:19.180 --> 04:26.340
Più avanti, quando configureremo e
scriveremo il nostro ViewModel, vedremo
perché hilt è molto importante

54
04:26.340 --> 04:35.460
e perché usiamo questo modulo per fornire
una singleton e una sola istanza del
repository.


