-
結(jié)構(gòu)。查看全部
-
haha查看全部
-
hdhevd_查看全部
-
observer查看全部
-
jdk觀察者模式優(yōu)點(diǎn)查看全部
-
jdk觀察者模式優(yōu)點(diǎn)查看全部
-
拉模型查看全部
-
推模型查看全部
-
觀察者模式結(jié)構(gòu)查看全部
-
觀察者流程圖查看全部
-
課程大綱查看全部
-
觀察者模式應(yīng)用場景查看全部
-
觀察者模式的應(yīng)用場景查看全部
-
Jdk方式實(shí)現(xiàn) 觀察者模式 測(cè)試 public static void main(String[] args) { WeatherSubject subject=new WeatherSubject(); //創(chuàng)建目標(biāo)類 subject.addObserver(new WeatherObserver("觀察者A")); //增添觀察者 subject.addObserver(new WeatherObserver("觀察者B")); //增添觀察者,推送的順序和添加觀察者的順序貌似無關(guān) subject.setWeatherState("下雨"); } 輸出 觀察者B收到通知,推送值為參數(shù),天氣為下雨 觀察者A收到通知,推送值為參數(shù),天氣為下雨查看全部
-
Jdk方式實(shí)現(xiàn) 觀察者模式 目標(biāo)類代碼 /** * 目標(biāo)類,繼承Observable類,使其成為 可觀察的目標(biāo)類 */ public class WeatherSubject extends Observable { private String weatherState; public String getWeatherState() { return weatherState; } public void setWeatherState(String weatherState) { this.weatherState = weatherState; this.setChanged(); //通知之前必須要調(diào)用該方法,否則無法通知 this.notifyObservers("參數(shù)");//通知所有的觀察者。不管這里傳不傳參數(shù),都會(huì)傳給觀察者Observable引用。 } } 觀察者代碼 /** * 觀察者類,實(shí)現(xiàn)Observer接口,成為觀察者 */ public class WeatherObserver implements Observer { private String name;//隨便定義一個(gè)變量,作為觀察者的名字 public WeatherObserver(String name) { this.name=name; } /** * Observer接口中的方法,Observable目標(biāo)類會(huì)回調(diào)該方法 * @param observable 目標(biāo)類的引用,需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換 //不管通知傳不傳參數(shù),都會(huì)傳給觀察者Observable引用。 * @param object 目標(biāo)類主動(dòng)傳來的對(duì)象。 如果目標(biāo)類的通知沒傳參數(shù),則object為空 */ @Override public void update(Observable observable, Object object) { System.out.println(name+"收到通知,推送值為"+object+",天氣為"+((WeatherSubject)observable).getWeatherState()); } }查看全部
舉報(bào)
0/150
提交
取消