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