第2章观察者模式_第1页
第2章观察者模式_第2页
第2章观察者模式_第3页
第2章观察者模式_第4页
第2章观察者模式_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2观察者(观察者(Observer)模式模式让你的对象知悉现况认识观察者模式认识观察者模式l我们看看报纸和杂志的订阅:l报社的业务是出版报纸l向某家报社订阅报纸,只要他们有新报纸出版,就会向你送来。只要你是他们的客户,你就会一直收到新报纸l当你不想再看报纸的时候,取消订阅,他们就不会再送新报纸来l只要报社还在运营,就会一直有人(或单位)向他们订阅报纸或取消订阅报纸认识观察者模式认识观察者模式l出版者订阅者观察者模式出版社即主题(Subject)订阅者即观察者(Observer)认识观察者模式认识观察者模式222认识观察者模式认识观察者模式要注册(定阅)认识观察者模式认识观察者模式认识观察者模式

2、认识观察者模式8888我要删除自己(取消订阅)认识观察者模式认识观察者模式认识观察者模式认识观察者模式141414定义定义观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新观察者模式观察者模式l观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。观察者模式观察者模式意图意图定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新观察者模式观察者模式l结构图观察者模式观察者模式l结构图各角色

3、解析:lSubject抽象主题:提供一个接口,可增加和删除观察者对象lConcreteSubject具体主题:当其内部状态改变时,给所有登记过的观察者发出通知lObserver抽象观察者:为所有的具体观察者定义一个接口,在得到主题的通知时更新自己lConcreteObserver具体观察者:实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协调观察者模式观察者模式l适用场景:1.当一个抽象模型有两个方面,其中一个方面依赖于另一个方面2.当对一个对象的改变需要同时改变其它对象,而不知道具体有多少个对象待改变3.当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换句话说,你不

4、希望这些对象是紧密耦合的观察者模式观察者模式缺点:缺点:由于观察者并不知道由于观察者并不知道其他观察者的存在,它其他观察者的存在,它可能对目标的最终代价可能对目标的最终代价一无所知,可能会引起一无所知,可能会引起意外的更新意外的更新优点:优点:1、观察者和主题之、观察者和主题之间的耦合度较小间的耦合度较小2、支持广播通信、支持广播通信观察者模式体现的设计原则观察者模式体现的设计原则l思考:l观察者模式是如何遵循“封装变化点”、“针对抽象编程”及“多用组合,少用继承”等设计原则的?观察者模式体现的设计原则观察者模式体现的设计原则设计原则设计原则“开闭原则”,也即是对扩展开放,对修改关闭。观察者模

5、式体现的设计原则观察者模式体现的设计原则观察者模式体现的设计原则观察者模式体现的设计原则设计原则设计原则“里氏替换原则”,也即是子类能替换父类。观察者模式体现的设计原则观察者模式体现的设计原则设计原则设计原则为了交互对象之间的松耦合而努力。观察者模式的应用观察者模式的应用l练习一:观察者模式的应用观察者模式的应用l练习一分析:气象站:气象站:由WeatherData对象负责追踪目前的天气状况(温度、湿度、气压)。有三种布告板,分别显示目前的状况、气象统计及简单的预报。当WeatherObject对象获得最新的测量数据时,三种布告板必须实时更新结合观察者模式,给出其结合观察者模式,给出其设计方案

6、?设计方案?观察者模式的应用观察者模式的应用观察者模式的应用观察者模式的应用l练习二:l某程序以多种不同的形式展示相同的数据,展示的方式可能是表格、柱状图、饼图等。当数据发生变化时,所有的展示方式都需要同步更新。l如何设计,来灵活应对展示方式的不确定性呢?观察者模式的应用观察者模式的应用观察者模式的应用观察者模式的应用l练习三:l在机房上课时间,老师若有事出去一下,这时班里同学有打游戏、看电影的等。这些玩的同学一般都会找一个“放哨”的,如果老师回来了就让通知他们。如果这个“放哨”的同学没有注意到老师回来了,也即是没有通知正在玩的同学说老师回来了,想想后果怎么样?这个时候肯定是老师本人“通知”正在玩的同学。l结合此场景,利用观察者模式,给出其设计类图观察者模式的应用观察者模式的应用观察者模式观察者模式l作业l班会通知l班长临时通知大家一件事,辅导员有事,班会取消不。当

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论