过去 , Java 使用责任链模式来处理事件 。 例如 , 当单击按钮时 , 会生成一个事件 , 然后通过一系列组件传递该事件 , 组件链由类和接口的层次结构定义 , 事件由处理程序类捕获和处理 。 Java 1.0 版使用了这种机制 , 这与 Java 1.1 版以后的事件处理方案有很大不同 。 旧方法仍受支持 , 但已弃用 , 因此不推荐用于新程序 , 现代方法基于委托事件模型 。
委托事件模型可以由三个组件定义:事件、事件源和事件侦听器 。
事件:事件对象定义了事件源类中的状态变化 。 例如 , 与图形界面的交互 , 例如单击按钮或通过键盘在文本框中输入文本、列表中的项目选择 , 都代表了某种状态的变化 。 事件对象用于携带状态变化所需的信息 。 但是 , 并非所有事件都由用户交互引起 。 存在不依赖于用户交互的事件 , 例如计时器事件、硬件/软件事件等 。 它们自动发生 。 一旦它们发生 , 我们可以定义处理它们的过程 。
事件源:事件源是由于组件属性的某些变化而导致事件发生的对象 。 由于组件可以触发多种类型 , 因此必须将每种类型都注册到侦听器以提供合适的响应 。
事件侦听器:事件侦听器是在特定事件发生时立即通知的对象 。 事件侦听器必须定义方法来处理他们有兴趣接收的通知 。
Java 1.1 事件层次结构的处理模型促进了多个接收者订阅 。 因此 , 订阅者可以向他们所有人发送通知以响应更改或更新 。 在委托事件模型中 , 指定为事件源的类生成一个事件并将其发送给一个或多个侦听器 。 处理事件过程的责任移交给它的侦听器 。 侦听器的类在附近等待 , 只有当它被感兴趣的事件触发时才会开始行动 。 设计方案与生成事件的主应用程序逻辑巧妙地分离 。
【Java|Java:理解和使用Java 委托事件模型】但是 , 侦听器必须注册或同意事件源类才能接收任何通知 。 这意味着特定事件仅由特定侦听器处理 。 消除了通过 Java 1.0 的包含层次结构链的开销 。 Java 1.0 曾经使事件经过许多不处理特定事件的侦听器 , 浪费了宝贵的时间 。 鉴于委托的性质和性能问题 , 现代方法使委托变得简单、高效和有效 。
- Java|俄罗斯宣布决定!美企垄断全球市场的格局,要彻底变了!
- 梁建章:如何平衡收益和代价,选择最小生命损失的防疫策略
- Java|少了几百万!腾讯马化腾年薪下调:总薪酬4414万
- 广东省|抽检15批消毒柜,9批不合格,康宝、万和等都上黑榜
- 五款性价比很高的微单相机
- 谷歌和三星推出修复补丁,填补 Linux 内核 Dirty Pipe 高危漏洞
- |空调怎么选?越贵越好吗?3K的和上万的有啥区别?
- 苹果|华为可能也没料到,逆袭的并不是小米和苹果,它才是“国产黑马”
- 亚马逊|和传统笔记本比较,120Hz OLED华硕好屏赢在哪里?看完你就懂了
- 像素赛博朋克风推理解谜游戏《牛车水侦探社》上线 Steam