Middle
Ce este delegarea în Kotlin?
sobes.tech AI
Răspuns de la AI
Delegarea în Kotlin este un pattern de proiectare în care un obiect (delegatul) își asumă responsabilitatea de a executa o anumită sarcină în numele altui obiect. Kotlin suportă delegarea nativ la nivel de sintaxă.
Există două tipuri principale de delegare în Kotlin:
-
Delegarea de clasă (Class Delegation): Permite unei clase A să implementeze o interfață, delegând toate apelurile de metode ale acesteia către un alt obiect B.
interface Base { fun printMessage() } class BaseImpl(val x: Int) : Base { override fun printMessage() { // Implementarea metodei interfeței println(x) } } class Derived(b: Base) : Base by b // Delegare la clasa BaseImplÎn exemplu,
Deriveddeleagă implementareaBasecătre obiectulb. -
Delegarea proprietăților (Delegated Properties): Permite delegarea logicii de obținere și setare a valorii unei proprietăți către un alt obiect. Kotlin oferă mai mulți delegați standard:
lazy()pentru inițializare întârziată.val lazyValue: String by lazy { // Se execută doar la prima referință la lazyValue println("se calculează!") "Salut" }Delegates.observable()pentru notificarea ascultătorilor despre modificări.import kotlin.properties.Delegates var name: String by Delegates.observable("valoare inițială") { prop, old, new -> println("$old -> $new") }Delegates.vetoable()pentru interceptarea modificărilor înainte de aplicare.import kotlin.properties.Delegates var max: Int by Delegates.vetoable(0) { prop, old, new -> new > old }- Delegatori pentru legarea de proprietățile unui map (
map).Utilizare:class User(val map: Map<String, Any?>) { val name: String by map val age: Int by map }User(mapOf("name" to "John Doe", "age" to 25))
Avantajele utilizării delegației în Kotlin:
- Reducerea boilerplate-ului: Redirecționează automat apelurile de metode sau logica proprietăților.
- Reutilizarea codului: Posibilitatea de a folosi delegați existenți sau de a crea propriile delegați.
- Separarea responsabilităților: Divizează clar logica proprietății sau a interfeței.
- Flexibilitate: Permite modificarea comportamentului delegației fără a modifica clasa.