Диспетчеризация собственных событий. Как объект сообщает о своем состоянии родителю в java? Вопрос #1: Каким образом в java объект может сообщить об изменении какой либо переменной своему родителю?
Я так понимаю, что для этого используются диспетчеризация событий? Только так, или есть еще какие то варианты?
Почему спрашиваю, потому что на счет кастомных событий ничего толком не нашел, и думаю может в java все иначе, чем в AS3. Очень странно, что на эту тему информации почти нету.
Нашел следующий вариант, как диспатчить в java://определяем функциональный интерфейс:
package sample;
public interface EventListener {
void dispatch(String s);
}
в родительском классе:// прописываем лямбда выражение
EventListener listener = e -> {
if (e.equals(snake.CHANGE_IS_LIVE)) // будем проверять типы событий
System.out.println("new event: " + e); // логика ...
};
snake.setListener(listener); // устанавливаем слушатель на дочерний объект
дочерний объект:// на пока просто константы, можно сделать перечисление ENUM (типы событий)
String CHANGE_IS_LIVE = "[change is live]";
String CHANGE_IS_MOVE = "[change is move]";
private EventListener listener; // ссылка на обработчик
public void setListener(EventListener l) {
this.listener = l;
}
public void dispatch() {
listener.dispatch(CHANGE_IS_LIVE); // собственно создаем событие

21 Авг 2019 в 06:59
197 +1
0
Ответы
1

Да, для сообщения о изменении состояния объекта родителю в Java действительно часто используется диспетчеризация событий. Этот подход позволяет объектам взаимодействовать между собой без явного обращения к родительским объектам.

Приведенная вами реализация использования функционального интерфейса и лямбда-выражений для диспетчеризации событий допустима в Java. Однако есть и другие варианты реализации данной задачи. Например, можно использовать интерфейс Listener и его реализации для обработки событий, а также использовать существующие библиотеки для упрощения работы с событиями, такие как EventBus из Guava.

В Java до появления лямбда-выражений (до Java 8) для реализации диспетчеризации событий обычно использовали интерфейсы Listener и реализации этих интерфейсов. Кроме того, можно было создавать собственные классы для определения и обработки событий.

Информации на эту тему может быть меньше, чем на другие темы, потому что диспетчеризация событий - это специфический способ организации взаимодействия объектов, который не всегда прямо относится к основным принципам программирования на Java. Однако, это важный инструмент при разработке приложений с графическим интерфейсом, играми и другими программами, где важно уведомление об изменении состояния объектов.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир