Sobes.tech
Junior — Middle

Kas sa saad selgitada delegatsiooni kontseptsiooni Kotlin keeles ja selle rakendamist?

sobes.tech AI

Vastus AI-lt

Kotlinis delegācija ir mehānisms, kas ļauj pārsūtīt noteiktas saskarnes vai īpašības īstenošanu citam objektam, nevis to tieši īstenot klasē. Tas palīdz izvairīties no koda dublēšanas un vienkāršo kompozīciju.

Visbiežāk sastopamais piemērs ir īpašību delegācija, izmantojot atslēgvārdu by.

Īpašību delegācijas piemērs:

class User {
    var name: String by Delegates.observable("") { prop, old, new ->
        println("Īpašība ${prop.name} mainījās no $old uz $new")
    }
}

Tāpat ir iespējams delegēt saskarnes īstenošanu:

interface Printer {
    fun print()
}

class RealPrinter : Printer {
    override fun print() {
        println("Dokumenta drukāšana")
    }
}

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // izsaukums tiek delegēts uz realPrinter
}

Šī pieeja ļauj sadalīt atbildību un atkārtoti izmantot kodu bez mantošanas.