pringBoot中的观察者模式实现
什么是观察者模式?假设你要打一局酣畅淋漓的游戏,那么你可能需要进行以下操作->
1. 解锁手机屏幕 2. 找到你要进行游戏的位置 3. 单机启动游戏
现在我们将启动游戏设计为一个api接口
控制器类 -> 三个业务方法均为控制台打印日志用
访问接口 ->
可以看到,在同一个api接口的业务逻辑下,我们先后执行了三个不同的方法,虽然也可以完成业务逻辑,但是不利于代码维护。例如我们添加一个在游戏前希望先弹出一个窗口,询问用户是否进行游戏,那么我们则需要新增一个业务方法,然后在接口添加该方法。违反了设计原则中的开闭原则,且代码间是紧密耦合的。
说人话就是,我们可以将访问该接口后要进行的一系列操作个被监听的事件,当该事件触发时,进行一系列操作,将我们的一系列操作统一封装起来,而具体的实现方式就是 —— 观察者模式
- 首先在SpringBoot工程中自定义一个事件型(一个简单的实体类)
这个类也就是我们的事件类型,你可以把他理解为单击时,载入时等
2.当用户调取接口时候进入业务函数当中,我们在里面发布事件(我的理解就是触发该事件)
在SpringBoot当中,我们需要使用ApplicationEventPublisher对象来完成事件发布,你有许多不同的方式获取到该对象,介绍一下我使用的方法
1).让类继承ApplicationEventPublisherAware接口,该接口中只有一个默认方法获取ApplicationEventPublisher对象
具体执行逻辑我也没搞懂,比如说该对象的具体内容是什么,在哪个环节被赋值。有懂的大佬希望可以解惑讨论
2)使用applicationEventPublisher的publishEvent方法进行发布,参数为事件类型,事件源为this
2.事件,你只需要让你的实体继承ApplicationEvent类就好
3.事件发布(触发)后的执行逻辑 - 监听器 我使用注解的形式完成,比较快捷
首先声明该类为spring容器的bean,然后为每一个方法打上注解@EventListener(方法中的参数为事件类型)