观察者模式Observer Pattern
定义对象间一对多的依赖关系,使得每当一个对象改变状态,所有依赖它的对象都得到通知自动更新
观察者模式就是当一个对象的变化会引起其他对象变化时,使其他对象依赖于这个对象,当这个对象变化时,更新所有依赖于这个对象的其他对象。
<span style="white-space:pre"> </span>//抽象观察者类
public abstract class Observer{
public abstract void update();
}
//具体观察者
public class ConcreteObserver{
public void update(){//}
}
//抽象被观察者
pubic abstract class Subject{
private Vector<Observer> observers = new Vector<Observer>();
public void add(Observer component){this.observers.add(component);}//增删容器
public void remove(Observer component){this.observers.remove(component);}
public void notify(){
for(Observer 0:this.observers){
o.update();
}
}
}
//具体被观察者
public class ConcreteSubject{
public void doSomething(){
super.notify();//更新所有观察者
}//具体业务
}
JAVA的JDK中提供了观察者模式的实现接口,
java.util.Observable实现类和java.util.Observer接口:
<span style="white-space:pre"> </span>//具体观察者
public class ConcreteObserver implements Observer{
public void update(Observable observable, Object obj){//接口提供的更新函数
//
}
}
//具体被观察者
public class ConcreteSubject extends Observable{
//Observable实现类提供了增删观察者,通知观察者的方法
public void doSomething(){
super.setChanged();//Observable实现的通知所有观察者方法
}//具体业务
}
观察者和被观察者
抽象耦合