Sobes.tech
Junior — Middle

El tudnád magyarázni a delegálás fogalmát a Kotlin nyelvben és annak alkalmazását?

sobes.tech MI

Válasz az MI-től

Kotlinban a delegálás egy olyan mechanizmus, amely lehetővé teszi egy adott interfész vagy tulajdonság implementációjának átadását egy másik objektumnak, ahelyett, hogy közvetlenül a osztályban valósítanánk meg. Ez segít elkerülni a kódduplikációt és egyszerűsíti a kompozíciót.

A leggyakoribb példa a tulajdonságok delegálása a by kulcsszó segítségével.

Tulajdonság delegálásának példája:

class User {
    var name: String by Delegates.observable("") { prop, old, new ->
        println("A ${prop.name} tulajdonság változott $old-ról $new-ra")
    }
}

Szintén delegálható egy interfész megvalósítása:

interface Printer {
    fun print()
}

class RealPrinter : Printer {
    override fun print() {
        println("Dokumentum nyomtatása")
    }
}

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // a hívás a realPrinter-re delegálódik
}

Ez a megközelítés lehetővé teszi a felelősségek szétválasztását és a kód újrahasznosítását öröklődés nélkül.