卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

Java觀察者模式

Java觀察者模式定義對(duì)象間一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象(被觀察者)的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象(觀察者)都得到通知并自動(dòng)更新。JDK中提供的觀察者模式的實(shí)現(xiàn)是由接口和java.util.Ob

Java觀察者模式定義對(duì)象間一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象(被觀察者)的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象(觀察者)都得到通知并自動(dòng)更新。JDK中提供的觀察者模式的實(shí)現(xiàn)是由接口和java.util.Observable類組成的,其中Observer代表觀察者,而Observable代表被觀察者。

Observable類

Observable類是由被觀察者(可有一個(gè)或多個(gè)觀察者)所繼承。調(diào)用setChanged方法,使得hasChanged方法返回值為true,則再次調(diào)用notifyObservers方法會(huì)觸發(fā)觀察者的update方法來通知觀察者該實(shí)例發(fā)生變化。

Observer接口

Observer接口中只有一個(gè)未實(shí)現(xiàn)的update抽象方法,實(shí)現(xiàn)該接口的對(duì)象稱為觀察者,該對(duì)象要實(shí)現(xiàn)update方法。注冊(cè)了該對(duì)象(觀察者)的對(duì)象(被觀察者)實(shí)例在調(diào)用notifyObservers方法之后,會(huì)自動(dòng)調(diào)用觀察者中的update方法。

被觀察者

被觀察者代表熱水器,繼承Observable類。它具有g(shù)etTemperature和setTemperature方法來獲取和設(shè)置水溫。boilWater方法用于燒水,當(dāng)水溫達(dá)到100度時(shí),調(diào)用setChanged方法將hasChanged方法返回值設(shè)為true,并調(diào)用notifyObservers方法通知觀察者。

觀察者

觀察者I114gBoxDisplayObservable代表顯示器,繼承Observable類并實(shí)現(xiàn)Observer接口。它具有g(shù)etStatus和setStatus方法用于獲取和設(shè)置水的狀態(tài)。displayTemperature方法用于顯示當(dāng)前水溫,當(dāng)水溫達(dá)到100度時(shí)會(huì)將狀態(tài)設(shè)為熱水,并調(diào)用setChanged方法將hasChanged方法返回值設(shè)為true,并調(diào)用notifyObservers方法通知觀察者。

觀察者

觀察者I114gBoxAlarmObserver代表報(bào)警器,實(shí)現(xiàn)Observer接口。它具有update方法用于在被觀察者狀態(tài)發(fā)生變化時(shí)觸發(fā)報(bào)警操作。

測(cè)試類

測(cè)試類用于運(yùn)行觀察者模式的示例。在main方法中創(chuàng)建了一個(gè)熱水器對(duì)象、一個(gè)顯示器對(duì)象和一個(gè)報(bào)警器對(duì)象。然后通過調(diào)用addObserver方法將顯示器設(shè)置為熱水器的觀察者,將報(bào)警器設(shè)置為顯示器的觀察者。最后調(diào)用熱水器的boilWater方法來模擬燒水過程。

運(yùn)行測(cè)試類,結(jié)果如下:

標(biāo)簽: