WEBVTT

1
00:00.620 --> 00:01.820
Bentornati.

2
00:01.820 --> 00:05.600
In questo video impareremo a conoscere la
delega delle proprietà in Kotlin.

3
00:05.630 --> 00:13.310
La delega delle proprietà consente di
delegare l'implementazione dei getter e

4
00:13.310 --> 00:14.900
setter di una proprietà a un altro
oggetto, chiamato delegato.

5
00:14.900 --> 00:21.650
Questa caratteristica consente di
realizzare vari modelli, come
l'inizializzazione pigra,

6
00:21.650 --> 00:24.080
le proprietà osservabili e altro ancora,
senza un codice boilerplate.

7
00:24.080 --> 00:32.300
Questo marchio di caratteristiche è la
parola chiave by, che viene utilizzata

8
00:32.300 --> 00:33.350
tra la definizione di una proprietà e la
specifica di un delegato.

9
00:33.350 --> 00:38.870
Tuttavia, vorrei che non faceste
confusione tra l'eredità e la delega.

10
00:38.870 --> 00:42.980
Passiamo ad Android Studio e facciamo un
rapido esempio.

11
00:42.980 --> 00:49.940
Supponiamo di dover monitorare lo stato
della rete in ogni momento nella nostra

12
00:49.940 --> 00:52.850
applicazione e di dover eseguire alcune
operazioni in base allo stato della rete.

13
00:52.850 --> 00:59.840
Possiamo tracciare lo stato della rete
nell'attività principale, che si

14
00:59.840 --> 01:01.250
estende dall'attività componente per
garantire il successo dell'intera
applicazione.

15
01:01.250 --> 01:08.410
Tuttavia, farlo direttamente nell'attività
principale violerebbe il principio della
responsabilità unica.

16
01:08.410 --> 01:16.150
Pertanto, la creazione e la delega di
un'altra classe per gestire la
responsabilità del

17
01:16.150 --> 01:19.630
monitoraggio dello stato della rete
fornirà una struttura del codice molto più
pulita.

18
01:19.660 --> 01:28.750
A questo scopo, creeremo una nuova
interfaccia, che chiameremo Network State
Listener.

19
01:28.780 --> 01:30.400
Cambiarlo in interfaccia.

20
01:30.400 --> 01:38.410
E all'interno di questa interfaccia creerò
una sola funzione, chiamata osservare lo
stato della rete.

21
01:38.410 --> 01:45.940
Il parametro è l'oggetto contesto e
l'oggetto proprietario del ciclo di vita.

22
01:45.940 --> 01:52.300
Quindi creeremo una classe chiamata
gestore dello stato della rete.

23
01:52.300 --> 02:00.970
Questa classe implementerà l'interfaccia
dell'ascoltatore dello stato della rete
Alt+ enter

24
02:00.970 --> 02:08.580
per implementare i membri, che sono la
funzione observe network state,

25
02:08.580 --> 02:09.360
e all'interno di questa funzione
visualizzerò un messaggio in logcat.

26
02:09.390 --> 02:13.830
Ci dice che stiamo osservando lo stato
della rete.

27
02:13.860 --> 02:21.480
Ok, ho creato questa interfaccia con una
funzione chiamata osservare lo stato della
rete.

28
02:21.480 --> 02:28.440
E ho creato questa classe, chiamata
gestore dello stato della rete, che si
estende dall'ascoltatore dello stato della
rete.

29
02:28.440 --> 02:38.790
Questo è il nostro codice all'interno
dell'attività principale che creerò per
implementare l'ascoltatore dello stato
della rete.

30
02:38.790 --> 02:45.540
E utilizzerò l'operatore di delega delle
proprietà, che è by.

31
02:45.540 --> 02:53.700
E qui delegherò questo per il gestore di
stato della

32
02:53.700 --> 02:54.420
rete alt più enter per aggiungere le
invocazioni del costruttore.

33
02:54.420 --> 02:56.490
Oppure si può aggiungere questo ok.

34
02:56.490 --> 03:06.240
E qui, all'interno della funzione
Oncreate, si utilizza la funzione observed
network state passando due

35
03:06.240 --> 03:09.710
parametri, uno per il contesto e uno per
il proprietario del ciclo di vita.

36
03:09.710 --> 03:16.280
Se si esegue l'applicazione e si apre la
ricerca del tag Logcat, si ottiene questo
messaggio.

37
03:16.310 --> 03:20.300
Osservando di nuovo lo stato della rete,
eseguiamola di nuovo.

38
03:20.330 --> 03:24.980
Aprire Logcat e osservare lo stato della
rete.

39
03:24.980 --> 03:27.980
Quindi il nostro esempio funziona bene.

40
03:27.980 --> 03:31.190
Ora approfondiamo questo esempio.

41
03:31.220 --> 03:37.310
All'inizio abbiamo creato questa
interfaccia, denominata Network State
Listener.

42
03:37.310 --> 03:44.630
Questa interfaccia contiene una funzione
chiamata observe network state per tenere
traccia dello stato della rete.

43
03:44.630 --> 03:53.240
Quindi abbiamo creato questa classe
network state handler che implementa
l'interfaccia

44
03:53.240 --> 03:58.130
network state listener e sovrascrive la
funzione observe network state.

45
03:58.130 --> 04:06.350
Qui, le azioni necessarie saranno gestite
per monitorare lo stato della rete

46
04:06.350 --> 04:09.070
e per semplicità ho visualizzato questo
messaggio di log nel tag Tag.

47
04:09.100 --> 04:18.340
Quindi, all'interno della nostra attività
principale, l'attività principale ha
delegato l'interfaccia dell'ascoltatore
dello stato di rete alla classe

48
04:18.340 --> 04:25.780
del gestore dello stato di rete per
eseguire le operazioni sullo stato di rete
all'interno della funzione Oncreate.

49
04:25.810 --> 04:31.150
Il monitoraggio dello stato della rete
viene eseguito con la funzione di stato
della rete osservata.

50
04:31.150 --> 04:35.230
Tuttavia, l'attività principale non lo fa
direttamente.

51
04:35.230 --> 04:41.650
Invece, delega alla classe del gestore
dello stato della rete in questo modo.

52
04:41.680 --> 04:47.110
Le operazioni di monitoraggio dello stato
della rete non vengono ripetute
nell'attività principale.

53
04:47.110 --> 04:54.640
Questa funzionalità viene trasferita a
un'altra classe, in questo

54
04:54.640 --> 04:55.270
caso la classe del gestore dello stato
della rete.

55
04:55.270 --> 05:03.190
Questo aiuta a rendere il codice più
modulare e manutenibile, per cui
l'osservazione dello stato della rete

56
05:03.190 --> 05:08.710
non viene fatta nell'attività principale,
ma è delegata alla classe del gestore
dello stato della rete.


