Sobes.tech
Junior — Middle

Можеш ли да обясниш концепцията за делегиране в езика Kotlin и нейното приложение?

sobes.tech AI

Отговор от AI

В Kotlin делегирането е механизъм, който позволява прехвърлянето на реализацията на определен интерфейс или свойство към друг обект, вместо да се реализира директно в класа. Това помага да се избегне дублиране на код и улеснява композицията.

Най-често срещаният пример е делегирането на свойства с помощта на ключовата дума by.

Пример за делегиране на свойство:

class User {
    var name: String by Delegates.observable("") { prop, old, new ->
        println("Свойството ${prop.name} се промени от $old на $new")
    }
}

Също така може да делегирате реализацията на интерфейс:

interface Printer {
    fun print()
}

class RealPrinter : Printer {
    override fun print() {
        println("Печат на документа")
    }
}

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // извикването се делегира на realPrinter
}

Този подход позволява разделяне на отговорностите и повторно използване на кода без наследяване.