




免费预览已结束,剩余22页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
observer 模式,喂!小丽啊! 通知项目组,下午开个项目会议,气象站例子,需求:终端用使用显示设备,显示当前的环境(温度、湿度和气压)、天气统计和简单的预报的三个测量值 从程序上考虑,执行measurementschanged()方法,目的更新当前环境、天气统计和预报 1、天气数据类里应该有得到三个测量值的getter方法。 2、measurementschanged()可以被有效的测量数据在任何时候调用。 3、三个测量值因新测量数据改变而改变 4、系统可以被扩充,如下图,class: weatherdata 通常的实现如下,分析 weatherdata 的缺点 currentconditionsdisplay、tatisticsdisplay、forecastdisplay,具体执行方法,我们没法增加和删除其它的显示元素,除非改变程序。 (temp,humidity,pressure),我们可以用通用的接口去告诉显示的元素,他们都有一个update方法传递temp,humidity,pressure值,什么是观查者模式? 报社 + 订阅者 = observer pattern 报纸出版社进入商业化,并且开始出版报纸 你订阅了报纸,每次报上都有新的新闻发表给你,只要你保持是一个订阅者,你就一直得到新的新闻。 当你不订阅时,他们就停止向你发表新的新闻 然而报社保持着与其它人订与不订的关系,如下图,dog、cat、mouse都是订阅者(观查者),subject是出版社(被观查者)。当subject改变时所有的订阅者都被通知,并且新的值传送你观查者。 duck不是观查者,因此当subject数据改变时,它不能得到通知。,observer的生命周期 (1)duck请求成为订阅者,duck成为正式的订阅者,duck接收数据,mouse请求取消订阅关系,mouse消取了订阅者身份,当subject有变更时,mouse得不取新的值,observer pattern 定义 一个类与一个类集合类一对多的关系,当一个类状态改变时,所有的依赖关系都被自动地改变和通报 报社是一个类(被观查者),订阅者是一个集合类(观查者),当报社发布新的报纸时,会分发给每一个订阅者(即通报)。 通俗理解:被观查者有什么变化,观查者立即做出反应,被观查者与观查者是一对多的关系 如下图subject与observers定义了一对多的关系,observers依赖与subject,那么当subject状态改变时,observer就会得到通报,observer模式的特点: 有力的松散地耦合: subject只要知道关于实现一种特别的observer接口,不需要知道具体的observer类做什么,或是别的。 我们能随时增加一个新的observers 我们不需要因为增加新的类型observers修改subject 我们能重新使用subject或observers彼此间的依赖 改变subject或observer将不影响彼此,程序实现 一、观查者实现(java.util.observer)接口,并且调用observable对象的addobserver()方法,将自已设成观查者身份,也可用删除方法,删除自已。 二、由observable发送通知 首先继承一个java.util.observable的超类,然后处理下面两步: (1)先必须调用setchanged()方法,表示在你的对象中状态改变了。 (2)调用两个notifyobservers()方法中的一个,发送通知 三、观查者接收通知 观查者需要实现observer接口的update方法,接收通知的改变。,气象站类图,设计原则: 作用类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学选修日语题库及答案
- 高考日语复合真题及答案
- 数字逻辑模拟试题及答案
- 工艺蜡染工三级安全教育(公司级)考核试卷及答案
- 快件派送员主管竞选考核试卷及答案
- 数字孪生应用技术员知识考核试卷及答案
- 涂装专业考试试题及答案
- 农发行阳泉市盂县2025秋招笔试性格测试题专练及答案
- 搪瓷坯体制作工年度评审考核试卷及答案
- 农发行遂宁市射洪市2025秋招笔试行测高频题及答案
- 北京市西城区2024-2025学年高三上学期期末考试英语试卷
- 外科护理学(第七版)复习试题有答案
- 土建施工技术、工艺、重点、难点分析和解决方案
- 钣金生产车间安全培训
- 关于有两个孩子的离婚协议书(2025年版)
- 2025年江门楼盘统计表
- 《财务大数据分析》教案
- 颅脑CT检查技术讲解
- 电机维修工作流程
- 新型领域安全的主要内容
- 服务效率与服务质量的双赢策略
评论
0/150
提交评论