您的位置:首页 > 编程语言 > Java开发

在Java中简单的使用观察者模式

2017-01-04 14:42 537 查看
主题接口:

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();
}


主题实现类:
public class WeatherData implements Subject {
private ArrayList<observer> Observers;
private float temp,humidity,pressure;
public WeatherData(){
Observers = new ArrayList<>();
}
@Override
public void registerObserver(observer o) {
Observers.add(o);
}

@Override
public void removeObserver(observer o) {
int i = Observers.indexOf(o);
if (i >= 0){
Observers.remove(i);
}

}

@Override
public void notifyObservers() {
for (int i = 0; i < Observers.size(); i++) {
observer o = Observers.get(i);
o.update(temp,humidity,pressure);
}
}

public void measurementsChanged(){
notifyObservers();
}

public void setMeasurements(float temp,float humidity,float pressure){
this.temp = temp;
this.humidity = humidity;
this.pressure = pressure;
measurementsChanged();
}
}

观察者实现类:
public class CurrentConditionsDisplay implements observer,DisplayElement {
private float temp,humidity,pressure;
public CurrentConditionsDisplay(){

}
@Override
public void update(float temp, float humidity, float pressure) {
this.temp = temp;
this.humidity = humidity;
this.pressure = pressure;
display();
}

@Override
public void display() {
System.out.println("当前天气:"+temp+"℃ "+humidity+"湿度 "+pressure+"气压");
}
}


主方法类:
public class WeatherStation {
public static void main(String[] agrs){
WeatherData data = new WeatherData();
CurrentConditionsDisplay display = new CurrentConditionsDisplay();
data.registerObserver(display);
data.setMeasurements(25,23,56);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: