原文地址:https://blog.csdn.net/u014453898/article/details/79167927
观察者:
private 被观察者;
doSomeThing();
被观察者:
private 观察者List;
add观察者();
remove观察者();
notify观察者();
public interface Subject {
public void registerObserver(Observer o); //数据源提供用于 ( 观察者想要获取数据源时调用此方法注册)
public void removeObserver(Observer o); //数据源提供用于 (观察者不再需要数据源数据时,退出注册)
public void notifyObservers(); //数据源向注册在案的所有观察者发送数据
}
---------------------
作者:ZJE_ANDY
来源:CSDN
原文:https://blog.csdn.net/u014453898/article/details/79167927
版权声明:本文为博主原创文章,转载请附上博文链接!
public interface Observer {
public void update(double temp,double humidity,double pressure);//观察者当接收到来自数据源的信息时,调用此方法更新自身数据
}
public interface DisplayElement {
public void display(); //观察者调用此方法向用户显示数据
}
import java.util.ArrayList;
public class WeatherData implements Subject{
private ArrayList observers;
private double temperature;
private double humidity;
private double pressure; /*当数据源初始化时,维护一个记录观察者的列表*/
public WeatherData() {
observers = new ArrayList();
} /*实现Subject接口的注册方法*/
public void registerObserver(Observer o) {
observers.add(o);
} /*实现Subject接口的取消注册方法*/
public void removeObserver(Observer o) {
int i = observers.indexOf(o);
if(i>=0) {
observers.remove(i);
}
} /*实现Subject接口的notifyObservers(),用于向所有注册的观察者发送数据*/
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();
} /*向获取数据的设备提供接口,当气象观察站获得新数据,会调用此接口向WeatherData写数据,以便WeatherData向观察者发送数据*/
public void setMeasurements(double temp,double humditidy,double pressure) {
this.temperature = temp;
this.humidity = humditidy;
this.pressure = pressure;
measurementsChanged(); //表示有了新数据
}
}
---------------------
作者:ZJE_ANDY
来源:CSDN
原文:https://blog.csdn.net/u014453898/article/details/79167927
版权声明:本文为博主原创文章,转载请附上博文链接!