觀察者模式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實現的通知所有觀察者方法
}//具體業務
}
觀察者和被觀察者抽象耦合