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

38 篇文章 0 订阅
3 篇文章 0 订阅

事件处理机制

有三个要素

事件、事件源、事件监听与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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值