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