【发布时间】:2011-05-28 08:23:35
【问题描述】:
在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() });
这样,我可以在不同的eventHandler类和函数中处理不同类型的CatEvent,而不必为不同的事件不断创建不同的事件监听方法?
也许我在 Java 的事件处理方面遗漏了一些东西,但有没有一种更简洁的方法,我不必继续复制和粘贴这 3 种方法,并为我想要的每种不同类型的方法创建这么多不同类型的事件对象派送?
谢谢!
【问题讨论】:
标签: java events event-handling event-dispatching