В 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 метода, плюс создавать так много различных типов объектов событий длявсе виды методов, которые я хочу отправить?
Спасибо!