Существует ли красивая конструкция для делегирования реализации интерфейса? Допустим, у нас есть интерфес:public interface I {
int a();
int b();
}
И есть его реализация:public class IR implements I {
@Override
public int a() {
return 1;
}
@Override
public int b() {
return 2;
}
}
Хочется построить класс, который будет так же реализовывать I и для этого делегировать все запросы по I к инстансу IR. Можно сделать через композицию:public class A implements I {
IR delegat = new IR();
@Override
public int a() {
return delegat.a();
}
@Override
public int b() {
return delegat.b();
}
}
Не красиво. Можно, конечно, через наследование:public class B extends IR {
}
Но это вносит свои ограничения, например, я не могу менять делегата в процессе жизни. Поэтому хочется через композицию.
Понятно, что Java тут ничем помочь не сможет. А нет ли в других языках конструкций наподобие:class B implements I {
IR delegat = new IR();
implements I by delegate;
}

21 Авг 2019 в 07:04
149 +1
0
Ответы
1

Да, в некоторых других языках программирования такая конструкция называется "делегирование интерфейса". Например, в языке Kotlin есть специальное ключевое слово "by", которое позволяет делегировать реализацию интерфейса другому объекту.

Пример реализации интерфейса I с помощью делегирования в Kotlin выглядел бы примерно так:

interface I {
fun a(): Int
fun b(): Int
}
class IR : I {
override fun a(): Int {
return 1
}
override fun b(): Int {
return 2
}
}
class B : I by IR()

Таким образом, класс B будет автоматически делегировать все вызовы методов интерфейса I объекту IR. В результате такой конструкции код становится более читаемым и поддерживаемым.

20 Апр в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 91 696 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир