觀察者模式在 Java 語(yǔ)言中的地位非常重要。在 JDK 的 java.util 包中,提供了 Observable 類以及 Observer 接口,它們構(gòu)成了 JDK 對(duì)觀察者模式的支持。如圖所示:
http://wiki.jikexueyuan.com/project/design-pattern-behavior/images/1341504430_1842.jpg" alt="JDK提供的Observable類及Observer接口結(jié)構(gòu)圖" />
(1) Observer 接口
在 java.util.Observer 接口中只聲明一個(gè)方法,它充當(dāng)抽象觀察者,其方法聲明代碼如下所示: void update(Observable o, Object arg);
當(dāng)觀察目標(biāo)的狀態(tài)發(fā)生變化時(shí),該方法將會(huì)被調(diào)用,在 Observer 的子類中將實(shí)現(xiàn) update() 方法,即具體觀察者可以根據(jù)需要具有不同的更新行為。當(dāng)調(diào)用觀察目標(biāo)類 Observable 的 notifyObservers() 方法時(shí),將執(zhí)行觀察者類中的 update() 方法。
(2) Observable 類
java.util.Observable類充當(dāng)觀察目標(biāo)類,在Observable中定義了一個(gè)向量Vector來(lái)存儲(chǔ)觀察者對(duì)象,它所包含的方法及說(shuō)明見表:
http://wiki.jikexueyuan.com/project/design-pattern-behavior/images/212928.jpg" alt="Observable類所包含方法及說(shuō)明" />
我們可以直接使用 Observer 接口和 Observable 類來(lái)作為觀察者模式的抽象層,再自定義具體觀察者類和具體觀察目標(biāo)類,通過(guò)使用 JDK 中的 Observer 接口和 Observable 類,可以更加方便地在 Java 語(yǔ)言中應(yīng)用觀察者模式。