- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种最直接的实现! public class WeatherData { //实例变量声明 public void measurementsChanged() { float temp =getTemperature(); float humidity =getHumidity(); float pressure =getPressure(); currentConditionsDisplay.update(temp ,humidity,pressure); statistiosDisplay.update(temp, humidity,pressure); forecastDisplay.update(temp, humidity, pressure); } //这里是其他WeatherData方法 } 调用WeatherData的三个getXxx()方法,以取得最近的测量值。这些getXxx()方法已经实现好了。 现在,更新布告板…… 调用每个布告板更新显示,传入最新的测量。 问题又来了,仔细看,用心想! public void measurementsChanged() { float temp =getTemperature(); float humidity =getHumidity(); float pressure =getPressure(); currentConditionsDisplay.update (temp ,humidity,pressure); statistiosDisplay.update(temp, humidity,pressure); forecastDisplay.update(temp, humidity, pressure); } 改变的地方,需要封装起来 针对具体实现编程,会导致我们以后在增加或删除布告板时必须修改程序。 至少,这里看起来像是一个统一的接口,布告板的方法名称都是update(),参数都是温度、湿度、气压。 主角登场By an instance ?报社的业务就是出版报纸。 ?向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来。只要你是他们的订户,你就会一直收到新报纸。 ?当你不想再看报纸的时候,取消订阅,他们就不会再送新报纸来。 ?只要报社还在运营,就会一直有人(或单位)向他们订阅报纸或取消订阅报纸。 观察者模式的活动(1) 狗对象 猫地象 老鼠对象 许多观察者 主题对象 鸭子对象 要注册(订阅) 鸭子对象过来告诉主题,它想当一个观察者。 鸭子其实想说的是:我对你的数据改变感兴趣,一有变化请通知我 主题对象 狗对象 鸭子对象 老鼠对象 猫对象 许多观察者 鸭子对象现在已经是正式的观察者了。 鸭子静候通知,等待参与这项伟大的事情。一旦接获通知,就会得到一个整数。 观察者模式的活动(2) 狗对象 鸭子对象 老鼠对象 猫对象 许多观察者 许多观察者 狗对象 鸭子对象 老鼠对象 猫对象 主题对象 主题对象 我要删除自己(取消订阅) 主题有了新的数据值! 现在鸭子和其他所有观察者都会收到通知:主题已经改变了。 老鼠对象要求从观察者中把自己除名。 老鼠已经观察此主题太久,厌倦了,所以决定不再当个观察者。 8 8 8 8 8 观察者模式的活动(3) 狗对象 猫地象 鸭子对象 狗对象 猫地象 鸭子对象 许多观察者 许多观察者 老鼠对象 主题对象 主题对象 老鼠对象 老鼠离开了! 主题知道老鼠的请求之后,把它从观察者中除名。 主题 一个新的整数 除了老鼠之外,每个观察者都会收到通知,因为它已经被除名了。嘘!不要告诉别人,老鼠其实暗暗地怀念这些整数,或许哪天又会再次注册,回来继续当观察者呢! 14 14 14 14 定义观察者模式 Subject Attach(Observer) Detach(Observer) Notify() Observer Update() ConcreteSubject GetState() SetState() subjectState ConcreteObserver Update() observerState for all 0 in observers 0→Update() Return subjectState observerSt
您可能关注的文档
- 四川大学计算机组成原理课件 第三章(1-4).ppt
- 四川大学计算机组成原理课件 第三章-1.ppt
- 四川大学计算机组成原理课件 第三章-5设计模型机.ppt
- 四川大学计算机组成原理课件 第五章(输入输出系统).ppt
- 四川大学计算机组成原理课件 概论.ppt
- 四川大学计算机组成原理课件 开场白.ppt
- 四川大学计算机组成原理课件 数字电路基础.ppt
- 四川大学计算机组成原理课件 信息表示.ppt
- 四川大学计算机组成原理课件第二章 计算机的语言.ppt
- 四川大学计算机组成原理课件第四章 处理器.ppt
- 19.风是怎样形成的(课件)2025青岛版三年级科学上册.ppt
- 湘科版信息科技三年级下册8单元活动2 保护计算机安全 课件 .ppt
- 1.2.2 声与听觉 课件 2025浙教版科学八年级上册.ppt
- 1.2 认识气温计(教学课件)科学教科版三年级上册(新教材).ppt
- 金融赋能新质生产力的内在逻辑与实现路径.pdf
- 第一单元第一课-认识智慧农业 课件 教科版2025信息科技八年级上册.ppt
- 湘科版信息科技五年级下册第8单元活动1 体验智能语音识别 教学课件.ppt
- 1.2 中国的人口 课件 2025人教版地理八年级上册.ppt
- Unit 1 第5课时 Part B Let’s learnDraw, write and say(教学课件)英语人教PEP版五年级上册(新教材).ppt
- 17.瘪的乒乓球鼓起来了(课件)2025青岛版三年级科学上册.ppt
文档评论(0)