“Head First 设计模式“ :观察者模式
发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,观察者模式观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。一方可称为主题(subject),另一方可称为观察者(observer),一个主题
千家信息网最后更新 2025年02月16日“Head First 设计模式“ :观察者模式
观察者模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。一方可称为主题(subject),另一方可称为观察者(observer),一个主题可拥有多个观察者。当主题的数据有变动时,就会通知所有订阅了它的观察者。在这之后的操作有两种:
推:主题直接将数据推送给所有观察者。
拉:主题通知了所有观察者后,每个观察者再根据自己的需要从主题拉取所需数据。
现实中的列子: 报纸出版社+订阅者=观察者模式,找工作+猎头=观察者模式
概念图:
UML图:
我们看一个列子吧
需求:Internet气象站需求
描述:跟踪气象站的数据,有变化时更新WeatherData对象,并最新信息显示在对应的显示器上,如下:
我们分析需求:
1. 一对多关系(不同的数据显示在对应的布告板上,如:湿度,温度等)。
2. 气象数据有变化时更新最新值并显示在布告板。
很适合观察者模式来实现,最终实现的UML图如下(代码省略):
JAVA内置支持观察者模式
注意:JAVA内置支持观察者模式,Subject是类不是接口,导致必须用继承,java本身不支持多继承,所以导致层次问题,不灵活。建议自己实现。
java.util.Observable(主题)
java.util.Observer(观察者)
我们用内置方法实现上面的列子,类图如下:
总结;
观察者模式的应用场景:
1、 对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。
2、 对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。
设计原则:为了交互对象之间的松耦合设计而努力。
观察者
观察
对象
模式
主题
数据
更新
气象
需求
列子
支持
设计
一方
之间
布告
气象站
状态
变化
订阅
不同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络服务器运维centos
中国中央数据库
网络技术服务合同纠纷判决
上海付正网络技术有限公司老板
服务器系统开远程桌面
如何判断数据库加密的方式
sql 数据库备份计划
软件开发云测评
成都软件开发实习面试题
软件开发和管理专业就业
初级网络安全工程师好学吗
打擂台下载软件开发
社会科学期刊数据库
软件开发如何更改软件背景
网络安全 讲师
怪物数据库名字字段
msde数据库引擎不兼容
网络安全和信息化管理课程
服务器监控软件对比
bim和软件开发
青岛教育软件开发
苏州机架式服务器多少钱
深圳大尚网络技术 拉勾
商城商品多属性数据库设计
懂网络技术的人月工资
严守网络安全守住保密底线讨论
计算机网络技术是文科
内网连接电骡服务器
嵌入式控制软件开发
关于网络安全活动项目书