Bentornati.
In questo video impareremo a conoscere la delega delle proprietà in Kotlin.
La delega delle proprietà consente di delegare l'implementazione dei getter e
setter di una proprietà a un altro oggetto, chiamato delegato.
Questa caratteristica consente di realizzare vari modelli, come l'inizializzazione pigra,
le proprietà osservabili e altro ancora, senza un codice boilerplate.
Questo marchio di caratteristiche è la parola chiave by, che viene utilizzata
tra la definizione di una proprietà e la specifica di un delegato.
Tuttavia, vorrei che non faceste confusione tra l'eredità e la delega.
Passiamo ad Android Studio e facciamo un rapido esempio.
Supponiamo di dover monitorare lo stato della rete in ogni momento nella nostra
applicazione e di dover eseguire alcune operazioni in base allo stato della rete.
Possiamo tracciare lo stato della rete nell'attività principale, che si
estende dall'attività componente per garantire il successo dell'intera applicazione.
Tuttavia, farlo direttamente nell'attività principale violerebbe il principio della responsabilità unica.
Pertanto, la creazione e la delega di un'altra classe per gestire la responsabilità del
monitoraggio dello stato della rete fornirà una struttura del codice molto più pulita.
A questo scopo, creeremo una nuova interfaccia, che chiameremo Network State Listener.
Cambiarlo in interfaccia.
E all'interno di questa interfaccia creerò una sola funzione, chiamata osservare lo stato della rete.
Il parametro è l'oggetto contesto e l'oggetto proprietario del ciclo di vita.
Quindi creeremo una classe chiamata gestore dello stato della rete.
Questa classe implementerà l'interfaccia dell'ascoltatore dello stato della rete Alt+ enter
per implementare i membri, che sono la funzione observe network state,
e all'interno di questa funzione visualizzerò un messaggio in logcat.
Ci dice che stiamo osservando lo stato della rete.
Ok, ho creato questa interfaccia con una funzione chiamata osservare lo stato della rete.
E ho creato questa classe, chiamata gestore dello stato della rete, che si estende dall'ascoltatore dello stato della rete.
Questo è il nostro codice all'interno dell'attività principale che creerò per implementare l'ascoltatore dello stato della rete.
E utilizzerò l'operatore di delega delle proprietà, che è by.
E qui delegherò questo per il gestore di stato della
rete alt più enter per aggiungere le invocazioni del costruttore.
Oppure si può aggiungere questo ok.
E qui, all'interno della funzione Oncreate, si utilizza la funzione observed network state passando due
parametri, uno per il contesto e uno per il proprietario del ciclo di vita.
Se si esegue l'applicazione e si apre la ricerca del tag Logcat, si ottiene questo messaggio.
Osservando di nuovo lo stato della rete, eseguiamola di nuovo.
Aprire Logcat e osservare lo stato della rete.
Quindi il nostro esempio funziona bene.
Ora approfondiamo questo esempio.
All'inizio abbiamo creato questa interfaccia, denominata Network State Listener.
Questa interfaccia contiene una funzione chiamata observe network state per tenere traccia dello stato della rete.
Quindi abbiamo creato questa classe network state handler che implementa l'interfaccia
network state listener e sovrascrive la funzione observe network state.
Qui, le azioni necessarie saranno gestite per monitorare lo stato della rete
e per semplicità ho visualizzato questo messaggio di log nel tag Tag.
Quindi, all'interno della nostra attività principale, l'attività principale ha delegato l'interfaccia dell'ascoltatore dello stato di rete alla classe
del gestore dello stato di rete per eseguire le operazioni sullo stato di rete all'interno della funzione Oncreate.
Il monitoraggio dello stato della rete viene eseguito con la funzione di stato della rete osservata.
Tuttavia, l'attività principale non lo fa direttamente.
Invece, delega alla classe del gestore dello stato della rete in questo modo.
Le operazioni di monitoraggio dello stato della rete non vengono ripetute nell'attività principale.
Questa funzionalità viene trasferita a un'altra classe, in questo
caso la classe del gestore dello stato della rete.
Questo aiuta a rendere il codice più modulare e manutenibile, per cui l'osservazione dello stato della rete
non viene fatta nell'attività principale, ma è delegata alla classe del gestore dello stato della rete.