观察者模式在项目中的实际应用

developS / 2023-07-31 / 原文

观察者模式观察者模式的定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知!

发布订阅模式是什么?

观察者模式和发布订阅模式是有一点点区别的,区别有以下几点:

  • 前者:观察者订阅主题,主题也维护观察者的记录,而后者:发布者和订阅者不需要彼此了解,而是在消息队列或代理的帮助下通信,实现松耦合。
  • 前者主要以同步方式实现,即某个事件发生时,由Subject调用所有Observers的对应方法,后者则主要使用消息队列异步实现。

Spring事件监听机制概述

SpringBoot中事件监听机制则通过发布-订阅实现,主要包括以下三部分:

  • 事件 ApplicationEvent,继承JDK的EventObject,可自定义事件。
  • 事件发布者 ApplicationEventPublisher,负责事件发布。
  • 事件监听者 ApplicationListener,继承JDK的EventListener,负责监听指定的事件。

一个完整的事件,由事件源、事件发布、事件监听三部分组成
声明事件 public class SendEmailEvent extends ApplicationEvent {

解耦 异步的左右 直接调用接口也可实现 但是不能解耦
事件发布 new publish(new VeAccountNotifyEventnotifyEvent(this,version)) 发送邮件(指令)
事件监听 @EventListener(VeAccountNotifyEventnotifyEvent event) 消费者(发送邮件)

点击确认后 (调用服务接口) new 事件发布 new publish(new VeAccountNotifyCallBackEvent(this,version)) 发送邮件(指令)
事件监听 @EventListener(VeAccountNotifyCallBackEvent event) 消费者(发送邮件)