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