过去 , Java 使用责任链模式来处理事件 。 例如 , 当单击按钮时 , 会生成一个事件 , 然后通过一系列组件传递该事件 , 组件链由类和接口的层次结构定义 , 事件由处理程序类捕获和处理 。 Java 1.0 版使用了这种机制 , 这与 Java 1.1 版以后的事件处理方案有很大不同 。 旧方法仍受支持 , 但已弃用 , 因此不推荐用于新程序 , 现代方法基于委托事件模型 。
委托事件模型可以由三个组件定义:事件、事件源和事件侦听器 。
事件:事件对象定义了事件源类中的状态变化 。 例如 , 与图形界面的交互 , 例如单击按钮或通过键盘在文本框中输入文本、列表中的项目选择 , 都代表了某种状态的变化 。 事件对象用于携带状态变化所需的信息 。 但是 , 并非所有事件都由用户交互引起 。 存在不依赖于用户交互的事件 , 例如计时器事件、硬件/软件事件等 。 它们自动发生 。 一旦它们发生 , 我们可以定义处理它们的过程 。
事件源:事件源是由于组件属性的某些变化而导致事件发生的对象 。 由于组件可以触发多种类型 , 因此必须将每种类型都注册到侦听器以提供合适的响应 。
事件侦听器:事件侦听器是在特定事件发生时立即通知的对象 。 事件侦听器必须定义方法来处理他们有兴趣接收的通知 。
Java 1.1 事件层次结构的处理模型促进了多个接收者订阅 。 因此 , 订阅者可以向他们所有人发送通知以响应更改或更新 。 在委托事件模型中 , 指定为事件源的类生成一个事件并将其发送给一个或多个侦听器 。 处理事件过程的责任移交给它的侦听器 。 侦听器的类在附近等待 , 只有当它被感兴趣的事件触发时才会开始行动 。 设计方案与生成事件的主应用程序逻辑巧妙地分离 。
【Java|Java:理解和使用Java 委托事件模型】但是 , 侦听器必须注册或同意事件源类才能接收任何通知 。 这意味着特定事件仅由特定侦听器处理 。 消除了通过 Java 1.0 的包含层次结构链的开销 。 Java 1.0 曾经使事件经过许多不处理特定事件的侦听器 , 浪费了宝贵的时间 。 鉴于委托的性质和性能问题 , 现代方法使委托变得简单、高效和有效 。
- Java|俄罗斯宣布决定!美企垄断全球市场的格局,要彻底变了!
- 伊隆·马斯克|再看看5年前的手机,华为mate10和荣耀V10,哪个性价比更高?
- 广东省|抽检15批消毒柜,9批不合格,康宝、万和等都上黑榜
- realme|realme GTNeo3和realmeGT2如何选择?答案很直接,但真实
- oppo reno|OPPO Reno8外观和参数规格遭曝光,网友:设计师变懒了
- 亚马逊|和传统笔记本比较,120Hz OLED华硕好屏赢在哪里?看完你就懂了
- 高通骁龙|华为新机开始有“眉目”:分为三款,并有骁龙8和100W快充加持!
- ios15|iOS 15.4:正式关闭降级通道,终可以和不好的版本说再见了!
- vivo|超越三星和华为?国产折叠屏旗舰提前泄密,核心参数全面曝光!
- OPPO|为何三星总是不被国内推荐?产品服务和华为OPPO形成反差