初识Spring Cloud系列——Spring Boot篇05|Java 开发实战

这是我参与更文挑战的第2天,活动详情查看: 更文挑战

本文正在参加「Java主题月 – Java 开发实战」,详情查看 活动链接

image.png

想想今天还没有更文,嗦了一碗面条,能量满满啦,下面开始看看何为观察者模式?

观察者模式 Observer Pattern

意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

如何理解?
当一个对象的状态发生改变时,依赖它的所有对象都能够收到通知,并根据通知改变状态

先上图
小明和小雪都去商店下单了一件衬衫,店家去工厂拿对应的衬衫,此时,小明、小雪都处于无衬衫状态,店家也记录了他俩的信息(联系方式、地址)
把衬衫打包好后贴上带有联系方式、地址的快递单,一起交给物流公司,物流公司根据地址和联系方式分别把衬衫送到小明、小雪手上,此时小明、小雪是有衬衫的状态
image.png

image.png

在这一场景中,店家与小明、小雪属于一对多的依赖关系,当店家把衬衫发给小明、小雪后,他俩都从无衬衫的状态改为有衬衫了

观察者模式在Spring中的应用,有4个角色:

  1. ApplicationEvent,ApplicationEvent相当于事件
  2. ApplicationListener (事件监听器),也就是观察者。
  3. ApplicationContext (事件发布),ApplicationContext 是 Spring 中的核心容器,在事件监听中 ApplicationContext 可以作为事件的发布者,也就是事件源。
  4. ApplicationEventMulticaster (事件管理),ApplicationEventMulticaster 用于事件监听器的注册和事件的广播。

image.png
在实际应用上,短信、邮件能功能都需要用到
例如短信:

/**
 * 短信监听(异步执行)
 */
@Component
public class SmsListener implements ApplicationListener<OrderEvent> {


    private static final Logger logger = Logger.getLogger(SmsListener.class);

    @Override
    @Async  
    public void onApplicationEvent(OrderEvent event) {
        System.out.println(Thread.currentThread() + "...短信监听到..." + event.getMessage()+ "......" + event.getSource());
    }
}
复制代码

今日小结:观察者模式比较容易理解它的作用,比如生活中的聊天工具、群广播等都有使用到观察者模式,来实现对消息的订阅,以及消息状态的改变。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享