本篇文章主要介绍了"设计模式——观察者模式",主要涉及到方面的内容,对于软件工程感兴趣的同学可以参考一下:
我个人感觉这个模式使用非常的广泛。这是一个可以帮助你的对象知悉现状,不会错过该对象感兴趣的事。对象甚至在运行时可决定是否要继续被通知。观察者模式也是JDK中...
我个人感觉这个模式使用非常的广泛。这是一个可以帮助你的对象知悉现状,不会错过该对象感兴趣的事。对象甚至在运行时可决定是否要继续被通知。观察者模式也是JDK中使用最多的模式之一。
观察者模式
定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
观察者模式是松耦合设计理念的一个很好的诠释。
观察者模式定义了对象之间一对多的关系。
使用场景:比如现在需要做一个气象站监测系统,要求系统可以随时显示最新的温度,湿度,气压等信息,已知数据源为WeatherData对象,它会自动从气象站获取数据,现在的工作就是建立一个应用,利用WeatherData对象取得数据更新布告板显示最新的天气信息;
由场景中可知道,变法的信息为天气的状态(温度,湿度,气压),WeatherData对象负责收集这些信息,所以WeatherData对象可以作为一个状态的发布者(既被观察者),布告板负责展示这些变化的信息,可以作为观察者。
所以首先声明一个观察者接口,所有的观察者都必须实现这个借口用来接收被观察者推送过来的信息,这个接口中只有一个update()方法,用来更新天气状态信息。
publicinterface Observer {
publicvoid update(float temp, float humidity, float pressure);
}
然后是被观察者接口,被观察者接口中可以添加,删除观察者,并可以更新天气状态信息
publicinterface Subject {
publicvoid registerObserver(Observer o);
publicvoid removeObserver(Observer o);
publicvoid notifyObserver();
}
再增加一个布告板显示接口,用来显示天气状态信息,之所以增加这个接口是考虑到以后可能会增加新的布告板
publicinterface DisplayElement {
publicvoid display();
}
下面是被观察者的具体实现