- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Whip对象装饰它调用cost
一种最直接的实现! 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
您可能关注的文档
- UML与面向对象-课程中心.PPT
- Unix网络结构及Internet技术.PDF
- TSS-EM与虚拟现实设备-AIT海利创建.PDF
- UC-1通用润滑系统控制器-Leetern.PDF
- UTG7000C型-电子元器件.PDF
- UHECRs传播过程中产生的次级伽玛射线辐射-Indico.PDF
- USBOTG的工作原理OTG补充规范对USB的最重要的扩展是其.PDF
- U的值算出E.PPT
- UV-1750基本操作指引-岛津.PDF
- UML建模实例教程.PPT
- WinCCOA中DBLogger功能的组态.PDF
- VJIP2013读者培训.PPT
- VRay标准教程设置渲染图像的采样比率.PPT
- VOIPDOUP-GATEWAY-001系列使用手册V15518深圳强兵虎.DOC
- Win2003+IIS6+PHP533FastCGI+MySQl5150安装配置图文版.DOC
- WindowsServer2008作为服务器操作系统在设计上与Windows.DOC
- WindowsXP操作系统-忻州职业技术学院.PPT
- WD615国Ⅲ共轨系列起重机专用柴油机使用说明书.PDF
- WDJC系列节能装置-大庆吉鸿机械制造有限公司井下打捞工具油田.PPT
- Windows98操作系统-返回.PPT
文档评论(0)