在 Java 中,每次我想创建一个新的自定义事件时,我通常通过添加 3 个方法来完成,即:
addDogEventListener(EventListener listener);
removeDogEventListener(EventListener listener);
dispatchDogEventListener(DogEvent event);
然后现在如果我想调度另一个事件,比如 CatEvent,我将不得不再次创建所有这 3 个方法:
addCatEventListener(EventListener listener);
removeCatEventListener(EventListener listener);
dispatchCatEventListener(CatEvent event);
那么如果我只想管理一种 CatEvent 事件,比如 Meow,我必须再次复制并粘贴所有这 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() });
这样,我可以在不同的eventHandler类和函数中处理不同类型的CatEvent,而不必为不同的事件不断创建不同的事件监听器方法?
也许我错过了关于 Java 事件处理的一些东西,但是有没有一种更简洁的方法,我不必保留复制和粘贴这 3 种方法,并为我想要调度的每种不同类型的方法创建这么多不同类型的事件对象?
谢谢!