跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Java面向对象中观察者模式如何实现_观察者模式在Java中的实践解析

观察者模式通过接口定义、集合管理与事件通知实现解耦,核心是Subject与Observer分离;需自定义接口、用集合管理观察者、状态变更时遍历通知;Java内置Observable已弃用,推荐手写接口+组合方式。 观察者模式在Java中可通过接口定义+集合管理+事件通知的方式实现,核心是解耦被观察者(Subject)与观察者(Observer),让状态变化自动触发响应,无需硬 编码 调用。 定义观察者与被观察者接口 先抽象出行为契约,避免具体类强依赖: Observer接口 :声明
update()
方法,接收被观察者传来的数据或自身去拉取 Observable/Subject接口 :声明
register()
、
remove()
、
notifyObservers()
等管理与通知能力 实现可管理的被观察者类 以天气站为例,被观察者需维护观察者列表,并在状态变更时统一通知: 使用
ArrayList
存储注册对象,注意线程安全场景下可换为
CopyOnWriteArrayList
状态更新后调用
notifyObservers()
,遍历列表执行每个观察者的
update()
避免在通知过程中修改集合(如观察者内部反向注销),可先复制列表再遍历 编写具体观察者并注册响应逻辑 每个观察者实现
Observer
接口,关注自己关心的数据: Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 立即学习 “ Java免费学习笔记(深入) ”; 例如
CurrentConditionsDisplay
只更新当前温湿度,
StatisticsDisplay
负责计算均值和极值 注册时调用
weatherStation.registerObserver(this)
,解耦于初始化时机
update()
中建议只做轻量处理;耗时操作应交由线程池或异步机制,防止阻塞通知流 利用Java内置类简化开发(可选) Java早期提供
java.util.Observable
类和
java.util.Observer
接口,但自JDK 9起已标记为 deprecated : 原因包括:
Observable
是类而非接口,限制继承;通知机制不支持泛型;无法灵活控制通知顺序与异常处理 推荐手写接口+组合方式,更清晰、可测、易扩展 若项目已用旧版,迁移成本不高——只需提取接口,将原
Observable
功能移到自定义Subject中

相关文章