Sobes.tech
Junior — Middle

Můžeš vysvětlit koncept delegování v jazyce Kotlin a jeho použití?

sobes.tech AI

Odpověď od AI

V Kotlinu je delegace mechanismus, který umožňuje předat implementaci určitého rozhraní nebo vlastnosti jinému objektu namísto jejího přímého implementování ve třídě. To pomáhá zabránit duplicitě kódu a zjednodušuje složení.

Nejčastějším příkladem je delegace vlastností pomocí klíčového slova by.

Příklad delegace vlastnosti:

class User {
    var name: String by Delegates.observable("") { prop, old, new ->
        println("Vlastnost ${prop.name} se změnila z $old na $new")
    }
}

Také lze delegovat implementaci rozhraní:

interface Printer {
    fun print()
}

class RealPrinter : Printer {
    override fun print() {
        println("Tisk dokumentu")
    }
}

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // volání je delegováno na realPrinter
}

Tento přístup umožňuje rozdělit odpovědnosti a znovu použít kód bez dědičnosti.