一、方法回调 1. 解释
// A方法调用B方法同时将,对象本身传递给B
比如b.method(this) // this 是 A对象。
//在B类中,通过A对象,调用其方法
比如a.method()
2. A调用B传入的也可以是一个接口类型,回调方法为静态方法
二、观察者模式
主题(被观察者)【接口/实现类】
观察者【接口/实现类】
- Subject:抽象主题,它是用于抽象观察者的,因为主题对象需要管理所有依赖于它的观察者,所以必须对观察者抽象,才能实现统一的管理,提供接口注册和注销观察者
- ConcreteSubject:具体主题,它用于具体实现主题对象,它会将有关状态存入具体的观察者对象,在具体主题数据发生变化时,会给所有已经注册的观察者发送通知
- Observer:抽象观察者,它定义了一个接口,用于对观察者进行抽象
- ConcreteObserver:具体观察者,实现抽象观察者接口,以便在得到主题对象的通知时更新自身数据
三、事件监听模式
- Java中提供了基本的事件处理基类:
- EventObject:所有事件状态对象都将从其派生的根类;
- EventListener:所有事件侦听器接口必须扩展的标记接口
- Java中的事件监听(GUI)
- 事件源相当于具体主题
- 事件监听器相当于具体观察者
- 事件作为参数传给事件监听器的方法,起到回调函数的作用
- 首先创建事件源,并为其注册事件
- 当调用setMsg方法修改事件源中的数据时,会调用notifyListener方法通知所有监听器
- 在notifyListener方法中会遍历所有的监听器,创建事件对象,并作为参数传入监听器的事件处理方法(triggerEvent)
- 监听器的triggerEvent方法会调用事件的回调方法(callback)
- 回调方法用于编写具体的处理逻辑,比如输出内容给用户反馈
3. Spring中的事件简体(容器的各种事件)
- ApplicationEvent:事件对象,继承至JDK的类EventObject ,可以携带事件的时间戳
- ApplicationListener:事件监听器,继承至JDK的接口EventListener,该接口被所有的事件监听器实现,比如支持指定顺序的SmartApplicationListener
- ApplicationEventMulticaster:事件管理者,管理监听器和发布事件,ApplicationContext通过委托ApplicationEventMulticaster来 发布事件
- ApplicationEventPublisher:事件发布者,该接口封装了事件有关的公共方法,作为ApplicationContext的超级街廓,也是委托 ApplicationEventMulticaster完成事件发布。
参考: