Interface delegation позволяет классу автоматически перенаправлять вызовы методов интерфейса другому объекту, вместо того чтобы реализовывать их вручную. Это встроенная альтернатива Kotlin для повторяющегося шаблонного кода делегирования, который часто приходится писать на Java.
Используй ключевое слово by после имени интерфейса, а затем укажи объект, который будет обрабатывать реализацию:
interface Sound { fun makeSound() }
class CatSound : Sound {
override fun makeSound() = println("Meow")
}
class Cat(sound: Sound) : Sound by sound
Здесь Cat делегирует все вызовы интерфейса Sound предоставленному объекту sound автоматически.
Cat.makeSound() прозрачно перенаправляется объекту soundInterface delegation наиболее полезен, когда классу нужно расширить поведение, оборачивая другой объект — например, добавить логирование или кэширование поверх существующей реализации — без создания глубокой иерархии наследования.
В Kotlin ключевое слово by при делегировании интерфейса автоматически генерирует методы-прокси, которые прозрачно перенаправляют все вызовы методов интерфейса делегируемому объекту.
Новый — ещё не проверен сообществом
Вы