- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?学习设计模式已经有段时间了,这是总结的第一篇博客,文中有错误、漏洞之处,望各位支出,改正。
?????????????????????????观察者模式
? ? ? ??一、基本定义
? ? ? ??何谓观察者模式?观察者模式定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。
? ? ? ??在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展。
? ? ? ??观察者模式又称为发布-订阅模式。
? ? ? ??二、基本结构
? ? ? ??首先先看观察者模式的UML类图。
? ? ? ??分析:
? ? ? ? ? ?Subject:目标。他把所有对观察者对戏的引用保存在一个聚集里,每一个主题都可以有多个观察者。
? ? ? ? ? ?Observer:观察者。为所有的具体观察者定义一个接口,在得到主题的通知时能够及时的更新自己。
? ? ? ? ? ?ConcreteSubject:具体主题。将有关状态存入具体观察者对象。在具体主题发生改变时,给所有的观察者发出通知。
? ? ? ? ? ?ConcreteObserver:具体观察者。实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题状态相协调。
? ? ? ??三、实现观察者模式
? ? ? ??情景是这样的:在气象观测站中,它能够追踪目前的天气状况,包括温度、适度、气压。需要实现一个布告板,能够分别显示目前的状态,气象统计和简单的预报。当气象站中获取最新的测量数据时,三种布告板必须实时更新。
? ? ? ??下面是这个案例的设计图:
? ? ? ??编码实现:
? ? ? ??主题接口 ? Subject.java
[java]? HYPERLINK /chenssy/article/details/8955696 \o view plain view plain HYPERLINK /chenssy/article/details/8955696 \o copy copy HYPERLINK /chenssy/article/details/8955696 \o print print HYPERLINK /chenssy/article/details/8955696 \o ? ?
public?interface?Subject?{??
????/**?
?????*?注册观察者?
?????*?@param?observer?
?????*/??
????public?void?registerObserver(Observer?observer);??
??????
????/**?
?????*?删除观察者?
?????*?@param?observer?
?????*/??
????public?void?removeOberver(Observer?observer);??
??????
????/**?
?????*?当主题状态发生改变时,这个方法需要被调用,以通知所有观察者?
?????*/??
????public?void?notifyObserver();??
}??
? ? ? ??观察者接口 ?Observer.java
[java]? HYPERLINK /chenssy/article/details/8955696 \o view plain view plain HYPERLINK /chenssy/article/details/8955696 \o copy copy HYPERLINK /chenssy/article/details/8955696 \o print print HYPERLINK /chenssy/article/details/8955696 \o ? ?
public?interface?Observer?{??
????public?void?update(float?temp,float?humidity,float?pressure);??
}??
? ? ? ??布告板显示接口 DisplayElement.java
[java]? HYPERLINK /chenssy/article/details/8955696 \o view plain view plain HYPERLINK /chenssy/article/details/8955696 \o copy copy HYPERLINK /chenssy/article/det
您可能关注的文档
最近下载
- 玉米全程机械化技术课件.pptx VIP
- 大学生职业规划大赛《舞蹈学专业》生涯发展展示PPT.pptx
- 2024中国网球市场和网球人群洞察报告.pdf VIP
- PMC部经理任命书.docx VIP
- (高清版)B-T 4798.3-2023 环境条件分类 环境参数组分类及其严酷程度分级 第3部分:有气候防护场所固定使用.pdf VIP
- 矿物绝缘电缆.pptx VIP
- 2025年杭州青少年活动中心公开招聘工作人员2人笔试备考试题及答案解析.docx VIP
- GB 19577-2024 热泵和冷水机组能效限定值及能效等级.docx VIP
- CCAA认证通用基础合格评定[98].pdf VIP
- 《网店运营与管理》电子商务专业全套教学课件.pptx
文档评论(0)