鍍金池/ 教程/ Java/ 對(duì)象間的聯(lián)動(dòng)——觀察者模式(四)
請(qǐng)求發(fā)送者與接收者解耦——命令模式(四)
對(duì)象間的聯(lián)動(dòng)——觀察者模式(三)
算法的封裝與切換——策略模式(三)
請(qǐng)求發(fā)送者與接收者解耦——命令模式(三)
遍歷聚合對(duì)象中的元素——迭代器模式(四)
請(qǐng)求的鏈?zhǔn)教幚怼氊?zé)鏈模式(二)
自定義語(yǔ)言的實(shí)現(xiàn)——解釋器模式(五)
操作復(fù)雜對(duì)象結(jié)構(gòu)——訪問(wèn)者模式(一)
處理對(duì)象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(一)
處理對(duì)象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(三)
操作復(fù)雜對(duì)象結(jié)構(gòu)——訪問(wèn)者模式(二)
協(xié)調(diào)多個(gè)對(duì)象之間的交互——中介者模式(二)
算法的封裝與切換——策略模式(四)
請(qǐng)求發(fā)送者與接收者解耦——命令模式(六)
撤銷功能的實(shí)現(xiàn)——備忘錄模式(二)
算法的封裝與切換——策略模式(一)
遍歷聚合對(duì)象中的元素——迭代器模式(五)
模板方法模式深度解析(三)
協(xié)調(diào)多個(gè)對(duì)象之間的交互——中介者模式(五)
自定義語(yǔ)言的實(shí)現(xiàn)——解釋器模式(三)
處理對(duì)象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(六)
遍歷聚合對(duì)象中的元素——迭代器模式(三)
操作復(fù)雜對(duì)象結(jié)構(gòu)——訪問(wèn)者模式(四)
遍歷聚合對(duì)象中的元素——迭代器模式(一)
算法的封裝與切換——策略模式(二)
請(qǐng)求的鏈?zhǔn)教幚怼氊?zé)鏈模式(一)
遍歷聚合對(duì)象中的元素——迭代器模式(二)
操作復(fù)雜對(duì)象結(jié)構(gòu)——訪問(wèn)者模式(三)
對(duì)象間的聯(lián)動(dòng)——觀察者模式(六)
對(duì)象間的聯(lián)動(dòng)——觀察者模式(五)
請(qǐng)求發(fā)送者與接收者解耦——命令模式(一)
自定義語(yǔ)言的實(shí)現(xiàn)——解釋器模式(六)
自定義語(yǔ)言的實(shí)現(xiàn)——解釋器模式(一)
模板方法模式深度解析(一)
撤銷功能的實(shí)現(xiàn)——備忘錄模式(一)
處理對(duì)象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(五)
請(qǐng)求的鏈?zhǔn)教幚怼氊?zé)鏈模式(三)
遍歷聚合對(duì)象中的元素——迭代器模式(六)
撤銷功能的實(shí)現(xiàn)——備忘錄模式(三)
處理對(duì)象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(四)
處理對(duì)象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(二)
協(xié)調(diào)多個(gè)對(duì)象之間的交互——中介者模式(四)
對(duì)象間的聯(lián)動(dòng)——觀察者模式(二)
請(qǐng)求發(fā)送者與接收者解耦——命令模式(二)
自定義語(yǔ)言的實(shí)現(xiàn)——解釋器模式(四)
對(duì)象間的聯(lián)動(dòng)——觀察者模式(四)
撤銷功能的實(shí)現(xiàn)——備忘錄模式(五)
自定義語(yǔ)言的實(shí)現(xiàn)——解釋器模式(二)
協(xié)調(diào)多個(gè)對(duì)象之間的交互——中介者模式(三)
協(xié)調(diào)多個(gè)對(duì)象之間的交互——中介者模式(一)
撤銷功能的實(shí)現(xiàn)——備忘錄模式(四)
模板方法模式深度解析(二)
撤銷功能的實(shí)現(xiàn)——備忘錄模式(五)
請(qǐng)求發(fā)送者與接收者解耦——命令模式(五)
請(qǐng)求的鏈?zhǔn)教幚怼氊?zé)鏈模式(四)

對(duì)象間的聯(lián)動(dòng)——觀察者模式(四)

JDK 對(duì)觀察者模式的支持

觀察者模式在 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)用觀察者模式。