WEBVTT

1
00:00.680 --> 00:01.640
Bentornati.

2
00:01.640 --> 00:05.280
Abbiamo creato le classi motore e auto e
il modulo app.

3
00:05.520 --> 00:11.840
Poiché stiamo lavorando in un ambiente non
Android, si tratta di puro codice Kotlin.

4
00:11.880 --> 00:16.040
Dobbiamo creare un ponte tra il modulo app
e queste classi.

5
00:16.040 --> 00:20.840
Creare quindi una nuova interfaccia
chiamata App Component.

6
00:21.560 --> 00:28.640
Ancora una volta, visto che stiamo
lavorando in un ambiente Android, più

7
00:28.640 --> 00:31.360
avanti vedremo che questa interfaccia non
verrà utilizzata nei progetti Android.

8
00:31.400 --> 00:38.920
Ok, ma voglio che vi concentriate su di me
per imparare tutti i

9
00:39.040 --> 00:41.040
possibili codici che potreste incontrare o
vedere in seguito nei vostri progetti.

10
00:41.040 --> 00:50.360
Contrassegnerò questo passaggio di
interfaccia, singleton e componente
all'interno del

11
00:50.400 --> 00:52.800
parametro modules, il modulo
dell'applicazione che abbiamo creato in
precedenza.

12
00:53.200 --> 00:55.560
Spieghiamo cosa abbiamo fatto prima.

13
00:56.040 --> 01:05.080
L'annotazione Singleton assicura che
questo componente fornisca istanze con
scope singleton delle

14
01:05.080 --> 01:08.300
sue dipendenze, in questo caso un oggetto
fornito da questo componente.

15
01:08.300 --> 01:15.860
Ad esempio, il componente dell'app avrà
una sola istanza per tutta

16
01:15.860 --> 01:19.140
la durata del componente, di cui abbiamo
parlato nel modulo precedente.

17
01:19.180 --> 01:22.380
Ora quel componente è una nuova
annotazione.

18
01:22.860 --> 01:26.820
L'annotazione del componente definisce un
componente pugnale.

19
01:26.860 --> 01:34.340
Un componente è come un ponte tra i
moduli, che forniscono

20
01:34.340 --> 01:35.860
le dipendenze, e le classi che hanno
bisogno di tali dipendenze.

21
01:35.900 --> 01:40.660
Di nuovo, ragazzi, scrivo questa nota
perché è molto importante.

22
01:40.700 --> 01:47.660
Di nuovo, ragazzi, voglio che scriviate
questi appunti perché sono molto

23
01:47.660 --> 01:52.340
importanti e vi aiutano a memorizzare e a
padroneggiare questi argomenti.

24
01:52.340 --> 01:58.860
E il master hilt di un componente è come
un ponte tra i moduli che forniscono le
dipendenze.

25
01:58.860 --> 02:05.020
I moduli forniscono le dipendenze e le
classi che ne hanno bisogno.

26
02:05.060 --> 02:05.580
Ok.

27
02:05.780 --> 02:12.800
Quindi è un ponte tra il modulo
dell'applicazione e le classi di auto

28
02:12.800 --> 02:15.520
e motore, un componente dagger crea e
gestisce il grafo delle dipendenze.

29
02:15.720 --> 02:24.000
Sa come risolvere le dipendenze cercando
nelle classi di annotazione del modulo i

30
02:24.000 --> 02:30.480
metodi di annotazione forniti e
utilizzando i costruttori annotati con
l'annotazione inject.

31
02:30.600 --> 02:38.280
Il parametro modules indica a dagger o
hilt quali moduli utilizzare per le
dipendenze.

32
02:38.320 --> 02:47.200
L'interfaccia di questo componente
dell'applicazione utilizzerà il modulo
dell'applicazione per risolvere le
dipendenze come il motore e l'auto.

33
02:47.320 --> 02:55.200
L'interfaccia del componente app definisce
l'API per recuperare le dipendenze dal
grafo delle dipendenze di dagger.

34
02:55.480 --> 03:03.400
I metodi di questa interfaccia espongono
gli oggetti che possono essere recuperati
dal grafo delle dipendenze.

35
03:03.640 --> 03:10.600
Creerò una funzione chiamata get car, che
restituirà un oggetto auto.

36
03:10.640 --> 03:19.820
Il metodo get car indica a dagger o hilt
che

37
03:19.820 --> 03:20.700
questo componente deve fornire un'istanza
di auto quando viene richiesta.

38
03:20.700 --> 03:28.860
Quando viene richiamato get car, il
componente dagger risolve tutte le
dipendenze necessarie per car, ad esempio.

39
03:28.900 --> 03:29.500
Motore.

40
03:29.540 --> 03:36.660
Se torniamo indietro, possiamo vedere che
per ottenere o fornire un'auto, dobbiamo
prima

41
03:36.660 --> 03:46.140
fornire un motore, che poi costruisce
un'istanza di auto usando il grafo

42
03:46.140 --> 03:47.660
delle dipendenze e restituisce l'istanza
di auto come componente di riepilogo
rapido.

43
03:47.660 --> 03:56.100
Definisce il ponte tra i fornitori di
dipendenze, ad esempio il modulo e i
moduli dei consumatori,

44
03:56.140 --> 04:03.300
e specifica i moduli, come il modulo app,
che il componente deve usare per risolvere
le dipendenze.

45
04:03.580 --> 04:11.660
Il singleton assicura che la stessa
istanza delle dipendenze del componente
sia riutilizzata durante il suo ciclo

46
04:11.660 --> 04:19.860
di vita e la funzione get car espone
l'oggetto car come dipendenza che può
essere recuperata.


