Sobes.tech
Back to questions
Junior — Middle
66

Какие типы делегатов для интерфейсов ты знаешь и применяешь в практике?

Answer from AI

sobes.tech AI

В Android-разработке для реализации делегирования интерфейсов часто применяются следующие типы делегатов:

  1. Анонимные классы — классический способ, когда интерфейс реализуется прямо в месте использования. Удобно для одноразовых обработчиков.

  2. Лямбда-выражения (начиная с Java 8 и в Kotlin) — более компактный и читаемый способ реализации интерфейсов с одним методом (функциональных интерфейсов).

  3. Классические делегаты в Kotlin — с помощью ключевого слова by можно делегировать реализацию интерфейса другому объекту, что упрощает код и повышает повторное использование.

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

interface ClickListener {
    fun onClick()
}

class ButtonClickHandler : ClickListener {
    override fun onClick() {
        println("Button clicked")
    }
}

class MyActivity(clickListener: ClickListener) : ClickListener by clickListener {
    // MyActivity делегирует реализацию ClickListener объекту clickListener
}

fun main() {
    val handler = ButtonClickHandler()
    val activity = MyActivity(handler)
    activity.onClick() // Выведет: Button clicked
}

Такой подход помогает разделять ответственность и упрощает поддержку кода.