觀察者模式簡介
觀察者模式是一種一對多的依賴關系,讓多個觀察者同時監聽某一主題對象。當這個主題對象發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。
JAVA對觀察者模式的支持
在JAVA語言的java.util庫里面,提供了一個Observable類以及一個Observer接口,構成JAVA語言對觀察者模式的支持。
Observer接口
這個接口只定義了一個方法,即update()方法,當被觀察者對象的狀態發生變化時,被觀察者對象的notifyObservers()方法就會調用這一方法。
public interface Observer {
void update(Observable o, Object arg);
}
Observable類
被觀察者類都是java.util.Observable類的子類。java.util.Observable提供公開的方法支持觀察者對象,這些方法中有兩個對Observable的子類非常重要:一個是setChanged(),另一個是notifyObservers()。第一方法setChanged()被調用之后會設置一個內部標記變量,代表被觀察者對象的狀態發生了變化。第二個是notifyObservers(),這個方法被調用時,會調用所有登記過的觀察者對象的update()方法,使這些觀察者對象可以更新自己。