java设计模式之观察者模式

本文介绍了观察者模式的定义,如何用Java实现,以及在SpringBoot中的实际应用。该模式强调对象间的解耦和状态变化通知,有助于提高代码维护性和扩展性。
摘要由CSDN通过智能技术生成

一、观察者模式定义

 观察者模式(Observer Pattern)是一种对象行为模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,有一个主题(也称为可观察对象)和多个观察者(也称为观察对象)。当主题的状态发生变化时,它会主动通知所有注册的观察者,以便观察者进行相应的更新操作。
 观察者模式主要解决的是当对象间存在一对多关系时,当一个对象被修改,会自动通知依赖它的其它对象。它通常被用来实现事件处理系统、实现业务对象之间的交互、权限管理等方面。
在这里插入图片描述

二、观察者模式代码

以下是一个使用java代码实现的观察者模式小demo。

首先,定义主题接口,包括添加、移除、通知观察者方法。
在这里插入图片描述

然后是主题实现类。
在这里插入图片描述

观察者接口。
在这里插入图片描述

观察者实现类。
在这里插入图片描述
测试方法。
在这里插入图片描述
在这里插入图片描述
上面例子中,我们创建了一个主题和两个观察者对象,其中观察者对象被添加进主题的list中,当主题的状态发生改变时,就会遍历通知list中的观察者,观察者就会执行具体逻辑。

三、SpringBoot中观察者模式的体现

我们进去SpringApplication的run方法。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
以上就是从META-INF/spring.factories文件下拿到SpringApplicationRunListener这个类通过多播器广播ApplicationStartingEvent事件
在这里插入图片描述
第一个红色框方法是从META-INF/spring.factories文件下拿到监听ApplicationStartingEvent事件的监听器,第二个红色框方法是通知监听器执行具体逻辑
在这里插入图片描述
do方法实际干活方法
在这里插入图片描述
监听器执行
在这里插入图片描述
判断监听事件执行具体逻辑,因为一个监听器可以监听多个事件并执行不同逻辑
在这里插入图片描述
执行具体逻辑-----加载日志系统
在这里插入图片描述

四、总结

 观察者模式是一种对象行为模式,它定义了对象间的一种一对多的依赖关系,以便当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动更新。该模式的核心思想是:当主题发生变化时,通知所有有观察者。

观察者模式优点:

  1. 解耦:观察者模式的主要优点在于解耦了主题和观察者之间的依赖关系,使得主题和观察者可以独立变化。当主题的状态发生改变时,所有观察者将被通知,从而实现了一种松耦合的方式来实现对象间的交互。
  2. 抽象耦合:观察者与被观察者建立一个抽象的耦合,不会影响到具体。
  3. 支持广播通信:被观察者会向所有登记过的观察者发出通知。
  4. 提高代码可维护性和可扩展性:观察者模式提供了一种灵活的机制,使得对象之间能够及时响应和相互协作,同时也提高了代码的可维护性和可扩展性。
  • 29
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值