Sobes.tech
Junior — Middle

Môžeš vysvetliť koncept delegovania v jazyku Kotlin a jeho použitie?

sobes.tech AI

Odpoveď od AI

V Kotlinu je delegácia mechanizmus, ktorý umožňuje preniesť implementáciu určitého rozhrania alebo vlastnosti na iný objekt namiesto priamej implementácie v triede. To pomáha predísť duplikácii kódu a zjednodušuje skladanie.

Najbežnejším príkladom je delegácia vlastností pomocou kľúčového slova by.

Príklad delegácie vlastnosti:

class User {
    var name: String by Delegates.observable("") { prop, old, new ->
        println("Vlastnosť ${prop.name} sa zmenila z $old na $new")
    }
}

Tiež je možné delegovať implementáciu rozhrania:

interface Printer {
    fun print()
}

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

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // volanie je delegované na realPrinter
}

Tento prístup umožňuje rozdelenie zodpovedností a opätovné použitie kódu bez dedičnosti.