Что такое Delegate

«Что такое Delegate» — вопрос из категории Kotlin, который задают на 31% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные виды делегатов:

  1. Lazy — инициализация при первом обращении
  2. Observable — отслеживание изменений свойства
  3. Vetoable — проверка перед изменением свойства
  4. Map — хранение свойств в Map

Пример с lazy:

val heavyObject by lazy { 
    HeavyObject() // создастся только при первом обращении
}

Пример с observable:

var name by Delegates.observable("") { _, old, new ->
    println("$old -> $new")
}

Делегаты помогают уменьшить шаблонный код и реализовать чистую архитектуру.