转载于https://www.toudo.cn/article/listener
设计模型
监听器模式也是观察者模式的一种实现,主要使用场景,事件源触发了某个操作时,不是自己处理,而是交给某个特定的处理器去处理相应的逻辑。
主要目的:解耦、可扩展。
三种角色
事件源
顾名思义,事件发生的源头,比如点击的按钮,属于被监听的对象;
事件发布者
就是这个事件的发起者,他只能是一个。
监听监听者
这个是监听器模式的核心,定义事件发生后的动作,通常事件对象作为监听器中定义的函数入参。它可以有多个。
举例
场景:监听某个文件夹删除事件,触发后续的一些操作。
事件声明
//事件 继承 spring 的事件 重写构造方法
public class DeleFileEvent extends ApplicationEvent {
private DeleFileEventData data;
public DeleFileEvent(Object source, DeleFileEventData data) {
super(source);
this.data = data;
}
public DeleFileEventData getData() {
return data;
}
}
事件发布者
@Component
public class BusinessEventPublish {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
// 发布删除事件
public void publish(DeleFileEventData data) {
DeleFileEvent deleFileEvent = new DeleFileEvent(this, data);
applicationEventPublisher.publishEvent(deleFileEvent);
}
}
事件监听者
/**
* @author lizf
* @create 2021-07-08 17:26
* 事件监听者 实现 spring ApplicationListener
*/
@Component
public class DeleFileEventListener implements ApplicationListener<DeleFileEvent> {
//业务处理
@Override
public void onApplicationEvent(DeleFileEvent deleFileEvent) {
System.out.println("删除文件后的处理............");
}
}