Sobes.tech
Назад к вопросам
Junior — Middle
64

Можешь объяснить концепцию делегирования в языке Kotlin и его применение?

Ответ от нейросети

sobes.tech 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
}

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