设计模式——观察者模式
来源:互联网 发布:尘埃落定 知乎 编辑:程序博客网 时间:2024/06/06 17:12
2.
OO原则:为对象之间的送耦合设计而努力
OO模式:观察者模式——在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖他的对象都会收到通知,并自动更新。
例子:天气报告站的各版面更新
import java.util.Observable;public class WeatherData extends Observable {private float temperature;private float humidity;private float pressure;public WeatherData() { }public void measurementsChanged() {setChanged();notifyObservers();}public void setMeasurements(float temperature, float humidity, float pressure) {this.temperature = temperature;this.humidity = humidity;this.pressure = pressure;measurementsChanged();}public float getTemperature() {return temperature;}public float getHumidity() {return humidity;}public float getPressure() {return pressure;}}
import java.util.Observable;import java.util.Observer;public class CurrentConditionsDisplay implements Observer, DisplayElement {Observable observable;private float temperature;private float humidity;public CurrentConditionsDisplay(Observable observable) {this.observable = observable;observable.addObserver(this);}public void update(Observable obs, Object arg) {if (obs instanceof WeatherData) {WeatherData weatherData = (WeatherData)obs;this.temperature = weatherData.getTemperature();this.humidity = weatherData.getHumidity();display();}}public void display() {System.out.println("Current conditions: " + temperature + "F degrees and " + humidity + "% humidity");}}
public class WeatherStation {public static void main(String[] args) {WeatherData weatherData = new WeatherData();CurrentConditionsDisplay currentConditions = new CurrentConditionsDisplay(weatherData);StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData);ForecastDisplay forecastDisplay = new ForecastDisplay(weatherData);weatherData.setMeasurements(80, 65, 30.4f);weatherData.setMeasurements(82, 70, 29.2f);weatherData.setMeasurements(78, 90, 29.2f);}}
以下是上述类的关系图:
阅读全文
0 0
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者
- 设计模式——观察者设计模式
- 设计模式——观察者
- 设计模式——观察者
- 设计模式 —— 观察者
- 设计模式——观察者
- 【设计模式】——观察者
- 设计模式——观察者模式
- 每日设计模式——观察者模式
- java生成并展示验证码
- mysql(五)操作数据表
- Linux_入门之虚拟机的全自动安装
- Android 三方登录
- c# android开发软件安装及环境配置
- 设计模式——观察者模式
- IntelliJ IDEA 的安装和破解
- HDU-6053 TrickGCD 前缀和数组,莫比乌斯函数
- 海量数据处理~
- 荀子 《劝学》
- loadrunner 在win10的那些事1
- 简单轮播图JS
- 【Java笔记】创建Class对象的三种常用办法和Class单例的测试
- 机器学习第二周--Multiple features & Normal equation