网站大量收购闲置独家精品文档,联系QQ:2885784924

观察者模式幻灯片.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
尚辅网 / 讨论:取消Subject接口会怎么样? 《interface》Subject registerObserver() removeObserver() notifyObserver() WeatherData registerObserver() removeObserver() notifyObserver() geTemperature() getHumidity() getPressure() measurementsChanged() 《interface》Observer update() CurrentconditionsDisplay update() Display(){ //display current //measurements StatisticsDisplay update() Display(){ //display average,… //measurements ThirdPartyDisplay update() Display(){ //display something //based on measurements 《interface》DisplayElement display() observers subject 尚辅网 / 总结:Observer模式 意图 定义对象间的一种一对多的依赖关系。当一方的对象改变状态时,所有的依赖者都会得到通知并被自动更新。 别名 依赖(Dependents) 发布-订阅(Publish-Subscribe) 个人认为叫通知者模式可能更好理解。 尚辅网 / 总结:Observer模式--动机 将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相关对象间的一致性。我们不希望为了维持一致性而使得各个类紧密耦合,导致可重用性的降低。 观察者模式使得任意数目的观察者不必知道彼此的存在,且主题发生变化时都可以得到主题的通知,而同步改变状态。是一种很松的耦合。具有很好的可重用性。 尚辅网 / 总结:Observer模式--适用性 当一个抽象模型有两个方面,其中一个方面依赖于另一个方面时,将这两者封装在独立的对象中使他们可以独立的改变和复用。 当一个对象的改变需要同时改变其他对象,而不知道具体有多少对象需要改变。 当一个对象必须通知其他对象,而他又不能假定其它对象是谁。 尚辅网 / 总结:Observer模式--结构 《interface》 Subject registerObserver() removeObserver() notifyObserver() ConcreteSubject registerObserver() removeObserver() notifyObserver() getState() setState() ConcreteObserver update() //other Observer //specific methods 《interface》 Observer update() 具体观察者 主题接口 具体主题 观察者接口 尚辅网 / 总结:Observer模式—参与者 Subject(主题) 知道它的观察者(观察者必须实现了一定的接口),可以有任意多个观察者。 提供注册和注销观察者的接口 Observer(观察者) 为那些在主题发生变化时需要获得通知的对象定义一个更新(update)接口。 ConcreteSubject(具体主题) 保持实际状态数据,当状态发生变化时通知各观察者 ConcreteObserver (具体观察者) 维持一个指向具体主题对象的引用 存储有关状态 实现Observer的更新接口,使自身状态与主题状态保持一致 尚辅网 / 习题(下周上机完成) 设有一股票,其价格在一定范围内波动,股民需要三种报告:股票的当前价格;股票价格的统计分析报告(最低价、最高价、均价);股票价格趋势预测。请运用观察者模式,编写上述股票行情程序(模拟估价30次变动)。编写实验报告,要求画出相应的类图,提供java源程序。下下周3前上交至hhzjut@。 提示:股价变动用随机数模拟:java.util.Random 选做:查阅相关资料,了解Java JDK内置的观察者模式,解释它为什么有时候不好用。 尚辅网 / 如何产生随机数 //引入Random类: import java.util.Random; //在程序段中: fina

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档