- 定义:观察者模式,在对象那个之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖他的对象都会收到通知,并自动更新。
- 原则:为交互对象之间的松耦合设计而努力。
一般在读代码的时候遇到有注册功能的代码时,就应该想到这里是不是用了观察者模式,观察者模式中有主题对象和观察者,那么主题对象就是通过注册功能来确定,它到底有那些观察者。
还是举一个例子来说明一下,有个气象站,需要收集气象数据,然后显示在布告板上,那么气象站数据就是主题对象,布告板就是观察者,一旦数据有更新(即主题对象状态改变),则会及时通知观察者。
示例:
public interface Subject{//主题对象的接口
public void registerObserver(Observer o);//注册观察者
public void removeObserver(Observer o);//注销观察者
public void notifyObserver();//当状态改变时,调用这个方法通知观察者
}
public interface Observer{//观察者对象
//主题通知观察者时,调用观察者的这个对象,并传递相关参数
public void update(float temp,float humidity,float pressure);//温度,湿度,气压
}
上面分别时主题和观察者的接口,根据注释很容易理解,现在分别实现主题和观察者。
public class WeatherData implements Subject{//主题接口的实现类
private ArrayList observers;