亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

設計模式(3)--觀察者模式

2019-11-06 06:02:04
字體:
來源:轉載
供稿:網友

一、觀察者模式定義

觀察者模式,也叫做發布-訂閱者模式,是屬于行為型模式中的一種,定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知并自動更新。

主題是真正擁有數據的人,觀察者是主題的依賴者,在數據變化時更新,這樣比起讓許多對象控制同一份數據來,可以得到更干凈的OO設計。

二、觀察者模式代碼實例

package SubjectAndObserver;/** * Created by L_kanglin on 2017/3/7. * 主題接口 */public interface Subject { //用來注冊觀察者 public void registerObserver(Observer o); //用來刪除觀察者 public void removeObserver(Observer o); //當主題狀態改變時,這個方法會被調用,以通知所有的觀察者 public void notifyObservers();}/** * Created by L_kanglin on 2017/3/7. * 觀察者接口 */public interface Observer { public void update(float temp,float humidity,float PRessure);}/** * Created by L_kanglin on 2017/3/7. * 顯示接口 */public interface DisplayElement { public void display();}/** * Created by L_kanglin on 2017/3/7. * 實現了Subject接口 */public class WeatherData implements Subject { private ArrayList observers; private float temperature; private float humidity; private float pressure; //用來記錄觀察者 public WeatherData(){ observers= new ArrayList(); } @Override //注冊觀察者 public void registerObserver(Observer o) { observers.add(o); } @Override //移除觀察者 public void removeObserver(Observer o) { int i = observers.indexOf(o); if(i>0){ observers.remove(i); } } @Override //更新當前消息 public void notifyObservers() { for(int i=0;i<observers.size();i++){ Observer observer = (Observer)observers.get(i); observer.update(temperature,humidity,pressure); } } //通知觀察者 public void measurementsChanged(){ notifyObservers(); } public void setMeasuremnets(float temperature,float humidity,float pressure){ this.temperature=temperature; this.humidity=humidity; this.pressure=pressure; measurementsChanged(); }}/** * Created by L_kanglin on 2017/3/7. * 實現觀察者接口和顯示接口 */public class CurrentConditionDisplay implements Observer,DisplayElement { private float temperature; private float humidity; private Subject weatherData; //注冊對象 public CurrentConditionDisplay(Subject weatherData) { this.weatherData=weatherData; weatherData.registerObserver(this); } @Override public void update(float temperature, float humidity, float pressure) { this.temperature=temperature; this.humidity=humidity; display(); } @Override public void display() { System.out.println("Current conditions:"+ temperature + " F degrees and "+humidity+"% humidity"); }}/** * Created by L_kanglin on 2017/3/7. * 一個測試觀察者模式的小程序,顯示當前的溫度壓力和濕度 */public class WeatherStation { public static void main(String[] args){ WeatherData weatherData = new WeatherData(); CurrentConditionDisplay currentConditionDisplay =new CurrentConditionDisplay(weatherData); weatherData.setMeasuremnets(80,65,30.4f); weatherData.setMeasuremnets(72,68,44.5f); weatherData.setMeasuremnets(52,88,35.4f); }}

上述代碼中主要是定義的Subject、Observer以及DisplayElement三個接口。 關于觀察者,主題只知道觀察者實現了某個接口(也就是Observer接口)。主題不知道觀察者的具體類是誰,做了些什么,或其它的任何細節。而這正是觀察者模式的優點,為了交互對象之間的松耦合設計而努力,改變主題或者觀察者其中一方,并不會影響到另一方。就是由于兩者的松耦合特性。

文章只是作為自己的學習筆記,借鑒了網上的許多案例,如果覺得闊以的話,希望多交流,在此謝過…


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
性欧美视频videos6一9| 欧美精品激情视频| 久久av红桃一区二区小说| 亚洲激情免费观看| 日韩亚洲国产中文字幕| 久久精品这里热有精品| 日韩中文字幕不卡视频| 欧美精品手机在线| 国产91精品视频在线观看| 亚洲欧美日韩精品久久| 国产精品va在线播放| 久久精品亚洲一区| 亚洲欧美国产一本综合首页| 国产精品久久久久久久7电影| 国产欧美精品一区二区三区-老狼| 亚洲成人av在线播放| 欧美福利视频在线观看| 中文字幕在线看视频国产欧美| 亚洲va欧美va在线观看| 亚洲天堂男人的天堂| 欧美精品激情视频| 亚洲网址你懂得| 毛片精品免费在线观看| 久久精品91久久久久久再现| 久久久久国产精品免费网站| 日韩精品久久久久久福利| 亚洲最大福利网站| 久久久久久久久91| 精品成人国产在线观看男人呻吟| 视频在线观看一区二区| …久久精品99久久香蕉国产| 91热精品视频| 精品久久久av| 国产一区二区视频在线观看| 日韩一区二区三区在线播放| 成人羞羞国产免费| 成人h片在线播放免费网站| 亚洲美女在线视频| 伊人亚洲福利一区二区三区| 国产精品露脸自拍| 欧美最猛性xxxxx(亚洲精品)| 深夜福利一区二区| 国产欧美精品久久久| 欧美黑人xxxx| 日韩中文字幕视频在线| 欧美精品videos| 成人激情综合网| 国产日韩欧美视频在线| 97成人在线视频| 亚洲欧美成人一区二区在线电影| 亚洲欧美另类人妖| 97视频在线播放| 国产精品三级网站| 亚洲精品影视在线观看| 中文字幕亚洲一区二区三区| 91久久精品日日躁夜夜躁国产| 日韩亚洲欧美中文在线| 亚洲淫片在线视频| 91av成人在线| 欧美午夜视频一区二区| 亚洲iv一区二区三区| 2019国产精品自在线拍国产不卡| 亚洲黄页视频免费观看| 欧美日韩亚洲精品一区二区三区| 国产精品久久电影观看| 成人中文字幕+乱码+中文字幕| 亚洲日本aⅴ片在线观看香蕉| 成人网址在线观看| 国产99久久久欧美黑人| 国产精品高潮呻吟久久av无限| 亚洲欧美日韩精品久久奇米色影视| 欧美在线亚洲一区| 日韩在线视频免费观看高清中文| 欧美黑人国产人伦爽爽爽| 91av在线网站| 欧美专区在线观看| 久久久久久有精品国产| 91九色国产社区在线观看| 成人天堂噜噜噜| 热久久这里只有精品| 欧美人与物videos| 国产精品一区二区三区免费视频| 国产欧美日韩最新| 日韩精品免费看| 欧美老女人www| 欧美国产日韩一区二区三区| 亚洲最新视频在线| 久久精品91久久香蕉加勒比| 日本高清久久天堂| 久久躁狠狠躁夜夜爽| 久久亚洲欧美日韩精品专区| 国产精品国产福利国产秒拍| 91成人福利在线| 91av福利视频| 亚洲综合自拍一区| 日韩免费视频在线观看| 久久综合色88| 精品国产欧美一区二区三区成人| 亚洲最大成人免费视频| 亚洲老头同性xxxxx| 性欧美xxxx| 久久久久久成人| 国产97色在线| 日韩av网址在线| 日韩免费高清在线观看| 欧美成人四级hd版| 精品福利免费观看| 亚洲第一av在线| 日韩在线资源网| 66m—66摸成人免费视频| 91精品免费久久久久久久久| 欧美视频在线视频| 中文字幕在线观看亚洲| 亚洲福利视频免费观看| 亚洲精品免费在线视频| 国产视频精品久久久| 国产一区二区三区高清在线观看| 久久久噜久噜久久综合| 人人爽久久涩噜噜噜网站| 欧美自拍大量在线观看| 精品国产自在精品国产浪潮| 国产狼人综合免费视频| 91中文在线观看| 91高清视频免费观看| 欧美另类极品videosbest最新版本| 97精品视频在线播放| 日韩激情片免费| 成人激情视频在线观看| 亚洲午夜精品久久久久久久久久久久| 九色精品美女在线| 国语对白做受69| 欧美午夜xxx| 亚洲激情视频在线播放| 日韩欧美在线视频观看| 中文字幕亚洲情99在线| 日韩黄色在线免费观看| 在线国产精品播放| 91成人性视频| 日韩一区二区av| 亚洲欧美在线免费观看| 中文字幕不卡av| 国产精品美女在线观看| 555www成人网| 国产综合色香蕉精品| 欧美又大又硬又粗bbbbb| 91精品视频在线看| 国产精品美女999| 午夜精品久久久久久99热| 国产精品十八以下禁看| 亚洲精品一区av在线播放| 欧美激情精品久久久久久蜜臀| 国产成人精品午夜| 午夜精品一区二区三区视频免费看| 亚洲剧情一区二区| 欧美在线一区二区视频| 色婷婷亚洲mv天堂mv在影片| 91欧美激情另类亚洲| 欧美人与性动交| 亚洲缚视频在线观看| 欧美激情日韩图片| 日韩一区二区福利| 久久精品在线播放| 91在线免费网站| 日韩的一区二区|