-
觀察者模式總結(jié)----(二) /** * 觀察者的具體實(shí)現(xiàn)---天氣預(yù)報(bào) */ public class WeatherSubject extends Subject { private String weatherState; //當(dāng)前天氣狀態(tài) public String getWeatherState() { return weatherState; } /** * 當(dāng)天氣的狀態(tài)發(fā)生改變的時(shí)候,要通知到所有的觀察者 * @param weatherState */ public void setWeatherState(String weatherState) { this.weatherState = weatherState; notifyAllObserver(weatherState);//調(diào)用父類的方法,通知所有的觀察者。告知其天氣狀態(tài) } } /** * 觀察者,有update接口,用來接受目標(biāo)類的通知 */ public interface Observer { /** * @param obj 目標(biāo)類 調(diào)用(通知) 觀察者對(duì)象該方法時(shí),傳入的通知內(nèi)容 */ void update(Object obj); } 測(cè)試 WeatherSubject subject=new WeatherSubject(); //創(chuàng)建天氣目標(biāo)對(duì)象 subject.attach(new Observer() { public void update(Object obj) { System.out.println("我是觀察者A,天氣為"+obj); } }); //增添觀察者 subject.attach(new Observer() { public void update(Object obj) { System.out.println("我是觀察者B,天氣為"+obj); } }); System.out.println("通知前。。。。"); subject.setWeatherState("晴天"); System.out.println("通知后。。。。");查看全部
-
觀察者模式總結(jié)-----(一) /** * 觀察者模式: 一個(gè)目標(biāo)類,多個(gè)觀察者(用來觀察目標(biāo))。 * 當(dāng)目標(biāo)類發(fā)生變化時(shí),可以通知到他的所有觀察者。 * * 原理:利用回掉函數(shù)機(jī)制。 所有“觀察者類”繼承一個(gè)“接口”(如Observer),該接口中有一個(gè) * 方法(如,update())。將所有的觀察者增添到“目標(biāo)類”的“鏈表”中,當(dāng)目標(biāo)類的狀態(tài)發(fā)生改變時(shí), * 目標(biāo)類可以遍歷鏈表中的所有觀察者,調(diào)用其update通知到所有的觀察者。 * * 案例描述:有一個(gè) 天氣預(yù)報(bào)(目標(biāo)) 類,許多觀察者類(如,網(wǎng)站,人等)需要第一時(shí)間得知天氣的變化, * 然后做各自的處理。 */ /** * 目標(biāo)類,用來增,刪觀察者,通知觀察者 */ public class Subject { private List<Observer> observerList=new ArrayList<>();//存儲(chǔ)觀察該目標(biāo)的觀察者 /** * 增添一個(gè)觀察者 * @param observer 要增添的觀察者 */ public void attach(Observer observer) { observerList.add(observer); } /** * 刪除一個(gè)觀察者 * @param observer 要?jiǎng)h除的觀察者 */ public void detach(Observer observer) { observerList.remove(observer); } /** * 通知所有的觀察者 * @param obj 要通知的信息 */ public void notifyAllObserver(Object obj) { for(Observer observer: observerList) { observer.update(obj);//遍歷所有的觀察者,依次調(diào)用其update方法。 } } }查看全部
-
觀察者實(shí)現(xiàn)模式的兩種方式,推模式和拉模式。查看全部
-
觀察者模式,要通過java的observer類。觀察者,你要先創(chuàng)建一個(gè)觀察者和被觀察者。查看全部
-
觀察者模式的定義 定義對(duì)象間的一種一對(duì)多的依賴關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)更新。查看全部
-
觀察者模式流程查看全部
-
觀察者模式的定義 定義對(duì)象間的一種一對(duì)多的依賴關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)更新。查看全部
-
觀察者模式應(yīng)用場(chǎng)景查看全部
-
模式的秘密---觀察者模式——利用Java提供的觀察者實(shí)現(xiàn) Java 實(shí)現(xiàn) VS 自己實(shí)現(xiàn)的對(duì)比四點(diǎn): (1)不需要再定義觀察者和目標(biāo)接口(JDK已經(jīng)定義)。 (2)具體的目標(biāo)實(shí)現(xiàn)里面不需要再維護(hù)觀察者的注冊(cè)信息,Java中的Observable類里面已經(jīng)實(shí)現(xiàn)。 (3)觸發(fā)通知的方式有一點(diǎn)變化,要先調(diào)用setChanged方法,這個(gè)是Java為了幫助實(shí)現(xiàn)更精確的觸發(fā)控制而提供的功能。 (4)具體觀察者的實(shí)現(xiàn)里面,update方法其實(shí)能同時(shí)支持推模型和拉模型,這個(gè)Java在定義的時(shí)候,已經(jīng)考慮。查看全部
-
命名建議查看全部
-
官方定義查看全部
-
需求總結(jié)查看全部
-
3查看全部
-
2查看全部
-
111查看全部
舉報(bào)
0/150
提交
取消