- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2 观察者(Observer)模式 让你的对象知悉现况 认识观察者模式 我们看看报纸和杂志的订阅: 报社的业务是出版报纸 向某家报社订阅报纸,只要他们有新报纸出版,就会向你送来。只要你是他们的客户,你就会一直收到新报纸 当你不想再看报纸的时候,取消订阅,他们就不会再送新报纸来 只要报社还在运营,就会一直有人(或单位)向他们订阅报纸或取消订阅报纸 认识观察者模式 出版者+订阅者=观察者模式 认识观察者模式 认识观察者模式 认识观察者模式 认识观察者模式 认识观察者模式 认识观察者模式 观察者模式 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。 观察者模式 观察者模式 结构图 观察者模式 结构图各角色解析: Subject抽象主题:提供一个接口,可增加和删除观察者对象 ConcreteSubject具体主题:当其内部状态改变时,给所有登记过的观察者发出通知 Observer抽象观察者:为所有的具体观察者定义一个接口,在得到主题的通知时更新自己 ConcreteObserver具体观察者:实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协调 观察者模式 适用场景: 当一个抽象模型有两个方面,其中一个方面依赖于另一个方面 当对一个对象的改变需要同时改变其它对象,而不知道具体有多少个对象待改变 当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换句话说,你不希望这些对象是紧密耦合的 观察者模式 观察者模式--体现的设计原则 思考: 观察者模式是如何遵循“封装变化点”、“针对抽象编程”及“多用组合,少用继承”等设计原则的? 观察者模式--体现的设计原则 观察者模式--体现的设计原则 观察者模式--体现的设计原则 观察者模式--体现的设计原则 观察者模式的应用 练习一: 观察者模式的应用 练习一分析: 观察者模式的应用 观察者模式的应用 练习二: 某程序以多种不同的形式展示相同的数据,展示的方式可能是表格、柱状图、饼图等。当数据发生变化时,所有的展示方式都需要同步更新。 如何设计,来灵活应对展示方式的不确定性呢? 观察者模式的应用 观察者模式的应用 练习三: 在机房上课时间,老师若有事出去一下,这时班里同学有打游戏、看电影的等。这些玩的同学一般都会找一个“放哨”的,如果老师回来了就让通知他们。如果这个“放哨”的同学没有注意到老师回来了,也即是没有通知正在玩的同学说老师回来了,想想后果怎么样?这个时候肯定是老师本人“通知”正在玩的同学。 结合此场景,利用观察者模式,给出其设计类图 观察者模式的应用 观察者模式 作业 班会通知 班长临时通知大家一件事,辅导员有事,班会取消不。当大家听到这个消息的时候,不再进教室开会了,而是各忙各的事。 辅导员的状态决定了大家的行为方式,也即是大家的行为方式是随辅导员的状态改变而改变的。 试结合观察者设计模式,给出其设计类图并写出其相应代码 * * 出版社即主题 (Subject) 订阅者即观察者 (Observer) 2 2 2 要注册(定阅) 8 8 8 8 我要删除自己 (取消订阅) 14 14 14 定义 观察者模式定义了对象之间的一对多依赖, 这样一来,当一个对象改变状态时,它的 所有依赖者都会收到通知并自动更新 意图 定义对象间的一种一对多的依赖关系,以 便当一个对象的状态发生改变时,所有 依赖于它的对象都得到通知并自动更新 缺点: 由于观察者并不知道 其他观察者的存在,它 可能对目标的最终代价 一无所知,可能会引起 意外的更新 优点: 1、观察者和主题之 间的耦合度较小 2、支持广播通信 设计原则 “开-闭原则”,也即是对扩展开放, 对修改关闭。 设计原则 “里氏替换原则”,也即是子类能替换 父类。 设计原则 为了交互对象之间的松耦合而努力。 气象站: 由WeatherData对象负责追踪目前的天气状况(温度、湿度、气压)。有三种布告板,分别显示目前的状况、气象统计及简单的预报。 当WeatherObject对象获得必威体育精装版的测量数据时,三种布告板必须实时更新 结合观察者模式,给出其设计方案? *
您可能关注的文档
最近下载
- 国家森林公园总体规划规范.doc VIP
- Unit 5 The colourful world Part C Reading time大单元教学设计 人教PEP版三年级英语上册2024.pdf
- 2024年疾控大学习全球预防接种进展答案.docx VIP
- 《体教融合文献综述》.docx VIP
- 2018年国家公务员考试《公安专业科目》真题及解析.pdf VIP
- 古代汉字对外传播史.doc
- 采访课件模板.pptx VIP
- 三九控制法——欧博企管.ppt VIP
- GBT 50034-2024 建筑照明设计标准.docx VIP
- 人教PEP五年级上册英语《Unit 4 Read and write 》教学课件.pptx
文档评论(0)