1. 观察者模式简介【Java中23种面试常考的设计模式之观察者模式(Observer)---行为型模式】_java观察者设计模式面试-CSDN博客
https://zhuanlan.zhihu.com/p/608880923
观察者模式(Observer Pattern)是一种行为设计模式,又称为发布/订阅(Publish/Subscribe)模式,它定义了对象间的一种一对多的依赖关系,使得当一个对象状态改变时,它的所有依赖对象都会被自动通知并且更新。
在 Java
中,观察者模式通常由两个接口组成:Subject
和 Observer
。
Subject
是被观察的对象Observer
是观察者Subject
接口定义了一系列方法,用于添加、删除和通知观察者,Observer
接口定义了一个update()
方法,当Subject
状态发生改变时,该方法被调用。
观察者模式的优点
- 观察者和被观察者是抽象耦合的
- 建立了一套触发机制
观察者模式的缺点
- 如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间
- 如果观察者和观察目标间有循环依赖,可能导致系统崩溃
- 没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的
观察者模式的使用场景
- 关联行为场景
- 事件多级触发场景
- 跨系统的消息变换场景,如消息队列的处理机制
2. SpringBoot观察者模式
举例:用户注册之后发送短信通知、积分还有优惠券Springboot 优雅实现观察者模式_springboot 观察者模式例子-CSDN博客
利用继承ApplicationEvent
类、实现ApplicationListener
接口或者 @EventListener
注解来实现
- 短信Service实现ApplicationListener接口
- 优惠券Service直接在
addCoupon
方法上添加注解@EventListener
- 注册业务完成发布
UserRegisterEvent
事件