观察者模式 java.util.Observable 与 java.util.Observer 的理解

本文介绍如何使用Java的观察者模式实现数据更新时多个界面的同步刷新。通过具体案例解释观察者模式的工作原理,包括如何定义观察者接口及实现类,以及如何在数据变化时通知所有观察者进行更新。

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

最近项目需求需要做一个一份数据刷新多个界面,当有数据到来时,同时对注册的所有界面刷新,在经过考虑后引入了观察者模式,将需要刷新注册的界面做为观察者,数据Model被观察者。

下面对观察者模式的总结:

java.util.Observer 接口用来指定观察者,观察者必须实现 void update(Observable o, Object arg) 方法。

java.util.Observable 用来指定观察物(被观察者、可被观察的),并且提供了一系列的方法。这个class需要被观察物继承。

s

java.util.Observer 只有一个简单的方法 void update(Observable o, Object arg)

其中,参数 Observable o 用于指定触发 update 方法的对象, Object arg 用于指定触发 update 方法时候的附加参数。

 

下面给个简单的读者和出版商为例说明:

 

 

在代码里面很清楚的看到,当出版社出版杂志的时候,会主动的告知读者,读者就会订阅杂志,这也是一种主动推送的模式。

 

调用 notifyObservers() 的时候,被观察者将自己this传递给观察者,目的是为了让同一个观察者可以注册到不同的被观察者上面的,而传过来的 Oberverable o 其实可以用来检验到底是谁发过来的消息,根据观察者感兴趣的数据做自己独立的相应处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值