Sobes.tech
Junior — Middle

Puoi spiegare il concetto di delega nel linguaggio Kotlin e la sua applicazione?

sobes.tech AI

Risposta dell'AI

In Kotlin, la delega è un meccanismo che consente di trasferire l’implementazione di un’interfaccia o di una proprietà specifica a un altro oggetto, invece di implementarla direttamente nella classe. Questo aiuta a evitare la duplicazione del codice e semplifica la composizione.

L’esempio più comune è la delega delle proprietà tramite la parola chiave by.

Esempio di delega di proprietà:

class User {
    var name: String by Delegates.observable("") { prop, old, new ->
        println("La proprietà ${prop.name} è cambiata da $old a $new")
    }
}

È anche possibile delegare l’implementazione di un’interfaccia:

interface Printer {
    fun print()
}

class RealPrinter : Printer {
    override fun print() {
        println("Stampa del documento")
    }
}

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // la chiamata viene delegata a realPrinter
}

Questo approccio permette di dividere le responsabilità e riutilizzare il codice senza ereditarietà.