代码的主要功能是实现天气预报。
package cn.exercise.algorithmsTest;
import java.util.ArrayList;
public class Observable {
// 被观察者接口
interface Subject {
public void registerObserver(Observer o);
public void removeObserver(Observer o);
public void notifyObservers();;
}
//被观察者的具体实现
static class Whether implements Subject {
private ArrayList<Observer> observers = new ArrayList<Observer>();
private float temperature;
public void registerObserver(Observer o) {
this.observers.add(o);
}
public void removeObserver(Observer o) {
this.observers.remove(o);
}
public void notifyObservers() {
for (int i = 0; i < observers.size(); i++) {
this.observers.get(i).update(temperature);
}
}
public float getTemperature() {
return temperature;
}
public void setTemperature(float temperature) {
this.temperature = temperature;
notifyObservers();
}
}
//观察者
interface Observer {
// 更新温度
public void update(float temp);
}
//观察者的具体实现1
static class WhetherDisplay1 implements Observer {
private float temprature;
private WhetherDisplay1(Subject whether) {
whether.registerObserver(this);
}
public void update(float temp) {
this.temprature = temp;
display();
}
public void display() {
System.out.println("display1****:" + this.temprature);
}
}
//观察者的具体实现2
static class WhetherDisplay2 implements Observer {
private float temprature;
private WhetherDisplay2(Subject whether) {
whether.registerObserver(this);
}
public void update(float temp) {
this.temprature = temp;
display();
}
public void display() {
System.out.println("display2****:" + this.temprature);
}
}
public static void main(String[] args) {
Whether whether = new Whether();
WhetherDisplay1 d1 = new WhetherDisplay1(whether);
WhetherDisplay2 d2 = new WhetherDisplay2(whether);
//当被观察者改变温度,观察者会做出相应的动作
whether.setTemperature(27);
whether.setTemperature(26);
}
}