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

面向对象方法与技术——设计模式课件.ppt

  1. 1、本文档共337页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * 观察者模式也称为发布-订阅模式 报社的业务就是出版报纸 向某家报社订阅报纸,只要他们有新报纸出版,就会给 你送来。只要你是他们的用户,你就会一直收到新报纸 当你不想再看报纸的时候,取消订阅,他们就不会再送 新报纸 只要报社还在运营,就会一直有人(或单位)向他们订 阅报纸或取消订阅报纸 * 观察者模式定义 * 观察者模式类图 实现观察者模式的一种方法。 * 松耦合的威力 当两个对象是松耦合的,它们彼此之间能够交互,但是 相互了解很少。 观察者模式提供了主题和观察者之间的松耦合设计。 因为主题只知道观察者实现了某个接口(即Observer接口), 主题不需要知道具体观察者是谁、作了些什么或其它任何 细节。要增加新的观察者或删除观察者,主题不会受到任 何影响,不必修改主题代码。 可以独立地复用主题和观察者,它们之间互不影响, 即是松耦合的。 * 设计气象站 右边三个布告板也应该有一个“主题”指针指向WeatherData对象,本图未画出来。 * 实现气象站 public interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer o); public void notifyObservers(); } public interface Observer { public void update(float temp, float humidity, float pressure); } public interface DisplayElement { public void display(); } 需要观察者作为参数。 * 实现气象数据的Subject接口 public class WeatherData implements Subject { private ArrayList observers; private float temperature; private float humidity; private float pressure; public WeatherData() { observers = new ArrayList(); } ArrayList记录观察者。 * public void registerObserver(Observer o) { observers.add(o); } public void removeObserver(Observer o) { int i = observers.indexOf(o); if (i = 0) { observers.remove(i); } } public void notifyObservers() { for (int i = 0; i observers.size(); i++) { Observer observer = (Observer)observers.get(i); observer.update(temperature, humidity, pressure); } } * public void measurementsChanged() { notifyObservers(); } public void setMeasurements(float temperature, float humidity, float pressure) { this.temperature = temperature; this.humidity = humidity; this.pressure = pressure; measurementsChanged(); } // other WeatherData methods here } * 实现显示 public class CurrentConditionsDisplay implements Observer, DisplayElement { private float temperature; private float humidity; private Subject weatherData; public CurrentConditionsDisplay(Subject weatherData) { this.weatherDa

文档评论(0)

676200 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档