设计模式深入浅出--19.观察者模式简单实例中Observer和Observable及其在JDK中的应用

本文深入解析观察者模式,一种用于定义对象间一对多依赖关系的行为型设计模式。通过实例讲解如何利用该模式建立触发机制,实现对象之间的广播通信。探讨模式的优缺点,并通过具体代码演示如何在Java中实现观察者模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

观察者模式

定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发送变化时,它的所有依赖者(观察者)都会收到通知并更新

类型:行为型

适用场景:

关联行为场景,建立一套触发机制

优点:

观察者和被观察者之间建立一个抽象的耦合

观察者模式支持广播通信

缺点:

观察者之间有过多的细节依赖。太高时间消耗及程序复杂度

使用要得当,要避免循环调用

Coding:

创建Course:

 创建Qustion类

创建Teacher类(Teacher是观察者,Course是被观察者)

 JDK中对于被观察者提供了Observable类

进入到Observable

不仅是使用了线程安全的Vector,而且它内部的很多方法也同样时线程安全的

通知观察者

 回到Course类中,编写productQuestion()方法

 查看setChanged()方法

将问题发送给对应的观察者

让Teacher这个观察者实现Observer接口

进入到Observer,可以看到它只有一个方法

第一个参数o:被观察的对象

第二个参数arg:notifyObservers方法传过来的对象(也就是被观察者里面通过notifyObservers方法传递过来的参数)

 

继续编写update()方法

 创建Test类

运行结果

查看当前UML类图

总结:观察者模式核心在于Observer和Observable两个接口将三个类联系起来

其主要业务逻辑在update()方法中进行处理。

在增加一个老师:

JDK中的应用 :

在java中有一个按钮,当我们按下之后,就会触发相应的事件,这就是监听,采用的也是观察者模式。

类Event

 类RequestContextListener

进入到类ServletRequestListener

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值