Sobes.tech
Junior — Middle

Можеш ли да објасниш концепт делегирања у језику Kotlin и његову примену?

sobes.tech АИ

Одговор од АИ

U Kotlinu, delegacija je mehanizam koji omogućava prenos implementacije određene interfejs ili svojstva na drugi objekat, umesto da je direktno implementira u klasi. Ovo pomaže da se izbegne dupliranje koda i pojednostavi kompozicija.

Najčešći primer je delegacija svojstava pomoću ključne reči by.

Primer delegacije svojstva:

class User {
    var name: String by Delegates.observable("") { prop, old, new ->
        println("Svojstvo ${prop.name} se promenilo sa $old na $new")
    }
}

Takođe, može se delegirati implementacija interfejsa:

interface Printer {
    fun print()
}

class RealPrinter : Printer {
    override fun print() {
        println("Štampanje dokumenta")
    }
}

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // poziv se delegira na realPrinter
}

Ovaj pristup omogućava razdvajanje odgovornosti i ponovno korišćenje koda bez nasleđivanja.