当前位置: 首页 > news >正文

java 事件处理机制 观察者模式

事件处理机制

有三个要素

事件、事件源、事件监听与java的对应关系如下

事件

事件源

事件监听

java

class

java.util.EventObject

java.util.EventObject 的 source 属性

interface

java.util.EventListener

观察者模式

又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。

应用场景

当一个对象状态的改变需要改变其他对象, 或实际对象是事先未知的或动态变化的

当应用中的一些对象必须观察其他对象时

优缺点

优点

开闭原则。 无需修改发布者代码就能引入新的订阅者类 (如果是发布者接口则可轻松引入发布者类)

可以在运行时建立对象之间的联系

缺点

订阅者的通知顺序是随机的

角色

Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。

ConcreteSubject:具体主题(具体被观察者),该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有注册过的观察者发送通知。

Observer:抽象观察者,是观察者的抽象类,它定义了一个更新接口,使得在得到主题更改通知时更新自己。

ConcrereObserver:具体观察者,实现抽象观察者定义的更新接口,以便在得到主题更改通知时更新自身的状态。

与 java、spring 的对应关系如下

Subject

ConcreteSubject

Observer

ConcrereObserver

java

规范中定义为接口,java 中没有进行规范处理

继承自java.util.EventObject 的类

接口 java.util.EventListener 的扩展

接口 java.util.EventListener 的实现类

spring

同上

继承自 ApplicationEvent 的类,间接继承 java.util.EventObject

接口 ApplicationListener 的扩展,间接继承 java.util.EventListener

接口 ApplicationListener 的实现类

参考链接

https://blog.csdn.net/m0_47944994/article/details/127903096

https://blog.csdn.net/qq_39411709/article/details/126877210

http://www.lryc.cn/news/37969.html

相关文章:

  • 使用 HTML5 轻松验证表单插件
  • 【Error: ImagePullBackOff】Kubernetes中Nginx服务启动失败排查流程
  • 九龙证券|直逼1.5万亿!A股融资余额创年内新高,青睐这些行业和个股
  • 【JavaScript】36_正则表达式
  • 参考 | 辨别真假笔记本三星内存条 (ddr4)
  • JavaScript Math(算数)对象
  • MyBatis里面用了多少种设计模式?
  • 第三十二周精华分享(2023.02.27-2023.03.06)
  • 数学建模资料整理
  • 设计模式---抽象工厂模式
  • Java Web 实战 07 - 多线程基础之单例模式
  • uniapp上实现左右关联滚动
  • Docker Remote API未授权访问
  • 【蓝桥杯】第十四届蓝桥杯模拟赛(第三期)C++ (弱go的记录,有问题的话求指点)
  • 算法24:LeetCode_并查集相关算法
  • TypeScript核心知识点
  • 基于“遥感+”融合技术在碳储量、碳收支、碳循环等多领域监测与模拟实践
  • 外卖点餐系统小程序 PHP+UniAPP
  • vuex3的介绍与state、actions和mutations的使用
  • windows 自带端口转发
  • 【算法】算法基础入门详解:轻松理解和运用基础算法
  • 2.9.1 Packet Tracer - Basic Switch and End Device Configuration(作业)
  • AtCoder Beginner Contest 216(F)
  • 每天学一点之Stream流相关操作
  • MatCap模拟光照效果实现
  • 二十一、PG管理
  • SAPUI5开发01_01-Installing Eclipse
  • Qt之高仿QQ系统设置界面
  • JVM概览:内存空间与数据存储
  • 固态存储设备固件升级方案