Java中的事件监听器和处理程序有什么区别?

jlc*_*488 77 java events listener handler

在Java的一般术语中,有事件的侦听器和处理程序.
我的意思是我在不知不觉中使用它们,无论API中有哪些.

我的问题是,在什么情况下我们使用监听器,在什么情况下我们使用处理程序进行事件?

他们之间有什么区别?特点?

我搜索了原因,但找不到适当的Java解释.

aio*_*obe 58

听众和处理程序之间没有正式定义的区别.有些人可能认为它们是可以互换的.然而,对我而言,它们的含义略有不同.

侦听器是一个订阅来自源的事件的对象.参看 在观察者模式.通常,您可以让许多侦听器订阅每种类型的事件,并通过方法添加它们addXyzListener.

例如:MouseListener在Java的API中.

处理程序是负责处理某些事件的对象.典型的场景是为特定事件/任务提供处理程序作为构造函数的参数,或者通过方法设置处理程序setXyzHandler.换句话说,您通常为每种类型的事件都有一个处理程序.

例如:MemoryHandler在Java的API中.


小智 30

最基本的区别是联想

  • 监听器与事件源关联(例如:键盘)
  • 处理程序与事件相关联(例如:keydown)

一般来说,只有一个管理所有事件的中央处理程序管理器,而在监听器的情况下,每个想要监听的实体都必须管理自己的监听器集合


dog*_*ane 20

这是我看到它的方式:

一个监听器手表被解雇的事件.例如,KeyListener等待KeyEvents,MessageListener等待消息到达队列,等等.

处理器是负责处理该事件.通常情况下,听众和处理人员齐头并进.例如,KeyListener告诉ExitHandler"按下字母Q"并且处理程序执行逻辑,例如清理资源和正常退出应用程序.类似的ButtonClickListener会告诉同一个ExitHandler"点击退出按钮".因此,在这种情况下,您有两个不同的事件,两个不同的侦听器,但只有一个处理程序.


小智 5

侦听器是在事件发生时收到通知的对象,它有 2 个主要要求 - 1-它必须已向一个或多个源注册才能接收有关特定类型事件的通知 2-它必须实现接收和处理的方法这些通知。Handler 负责处理事件。


小智 5

在我看来,最重要的区别是我们使用每个事件源的侦听器,这与每个事件类型的处理程序相反。