package observer;
import java.util.Observable;
import java.util.concurrent.ScheduledExecutorService;
/**
* 观察者模式
* */
public class WeatherDate extends Observable {
private String tempature;
private String humidity;
private String pressure;
private Boolean change;
//构造方法
public WeatherDate(){}
/**
* 通知观察者
* */
public void measurementsChanged(){
setChange();
if(change){
notifyObservers();
}
change=false;
}
/**
* 更新状态
* */
public void setMeasurementsChanged(String tempature, String humidity, String pressure){
this.tempature=tempature;
this.humidity=humidity;
this.pressure=pressure;
}
/**
* change的作用,例如......
* 做一个控制,不是一更新就通知观察者,所以有点重要,有set,就有get和clear
* */
public void setChange(){
change=true;
}
public void clearChange(){
change=false;
}
public String getTempature() {
return tempature;
}
public void setTempature(String tempature) {
this.tempature = tempature;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public String getPressure() {
return pressure;
}
public void setPressure(String pressure) {
this.pressure = pressure;
}
public Boolean getChange() {
return change;
}
public void setChange(Boolean change) {
this.change = change;
}
}
package observer;
import java.util.Observable;
import java.util.Observer;
public class Condition implements Observer {
private Observable observable;
private String tempature;
private String hunidity;
/**
* 构造方法
* 将该对象加入观察者
* */
public Condition(Observable observable){
this.observable=observable;
observable.addObserver(this);
}
/**
* Emmm.....
* 先判断是否是WeatherDate类型,获取WeatherDate更新的值
* */
@Override
public void update(Observable o, Object arg) {
if(o instanceof WeatherDate){
WeatherDate weatherDate=(WeatherDate)o;
this.tempature=weatherDate.getTempature();
this.hunidity=weatherDate.getHumidity();
}
}
}