出版者+订阅者=观察者模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并通知更新。
主题和观察者定义了一对多的关系,观察者依赖于此主题,只要主题状态一有变化,观察者就会被通知。
设计原则:为了交互对象之间的松耦合设计而努力。
Subject:目标
ConcreteSubject:具体目标
Object:观察者
ConcreteObject:具体观察者
public interface Subject{
//这两个方法都需要一个观察者作为变量,该观察者是用来注册或被删除的
public void registerObserver(Observer o);
public void removeObject(Observer o);
//当主题状态改变时,这个方法会被调用,以通知所有的观察者
public void notifyObject(Observer o);
}
public interface Observer{
public void uddate(float temp,float humidity,float pressure);
}
public interface DiaplayElement{
public void display();
}
//在WeatherData中实现主题接口
public class WeatherData implements Subject{
private ArrayList observers;
private float temperature;
private float humidity;
private float pressure;
public WeatherData(){
observers=new ArrayList();l
}
//当注册观察者时,我们只要把它加到ArrayList的后面即可
public void registerObserver(Observer o){
observers.add(o);
}
public void removeObserver(Observer 0){
int i=observers.indexOf(o);
if(i>=0){
observers.remove(i);
}
}
public void notifyObservers(){
for(int i=0;i