В Java каждый раз, когда я хочу создать новое пользовательское событие, я обычно делаю это, добавляя 3 метода, а именно:
addDogEventListener(EventListener listener);
removeDogEventListener(EventListener listener);
dispatchDogEventListener(DogEvent event);
Теперь, если я хочу отправить другое событие, скажем, CatEvent, мне придется снова создать все эти 3 метода:
addCatEventListener(EventListener listener);
removeCatEventListener(EventListener listener);
dispatchCatEventListener(CatEvent event);
Тогда, если я хочу управлять только одним событием CatEvent, скажем, «Мяу», мне нужно снова скопировать и вставить все эти 3 метода?! Например, addCatMeowEventListener();... и т. д.?
И обычно мне нужно отправлять более одного типа событий. Было бы очень неаккуратно, если бы весь класс был заполнен таким количеством методов для передачи и обработки событий. Мало того, эти функции имеют очень похожий код, например циклический просмотр EventListenerList, добавление события в список и т. д.
Это то, как я должен выполнять диспетчеризацию событий в Java?
Есть ли способ, как я могу сделать это так:
mainApp.addEventListener(CatEvent.MEOW, new EventHandler() { meowHandler(Event e) { });
mainApp.addEventListener(CatEvent.EAT, new EventHandler() { eatHandler(Event e) { });
myCat.addEventListener(DogEvent.BARK, new EventHandler() { barkHandler(Event e) { myCat.run() });
Таким образом, я могу просто обрабатывать различные типы CatEvent в разных классах и функциях eventHandler, и мне не нужно создавать разные методы прослушивания событий для разных событий?
Может быть, я что-то упустил в обработке событий Java, но есть ли более аккуратный способ, которым мне не нужно копировать и вставлять 3 метода, а также создавать так много разных типов объектов событий для каждого типа методов, которые я хочу отправить?
Спасибо!