国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 開發 > Java > 正文

Java設計模式—觀察者模式詳解

2024-07-14 08:43:33
字體:
來源:轉載
供稿:網友

觀察者模式

包括這個模式在內的接下來的四個模式,都是類和類之間的關系,不涉及到繼承,學的時候應該 記得歸納,記得本文最開始的那個圖。觀察者模式很好理解,類似于郵件訂閱和RSS訂閱,當我們瀏覽一些博客或wiki時,經常會看到RSS圖標,就這的意思是,當你訂閱了該文章,如果后續有更新,會及時通知你。其實,簡單來講就一句話:當一個對象變化時,其它依賴該對象的對象都會收到通知,并且隨著變化!對象之間是一種一對多的關系。

先來看看關系圖:

Java,設計模式,觀察者模式

我解釋下這些類的作用:MySubject類就是我們的主對象,Observer1和Observer2是依賴于MySubject的對象,當MySubject變化時,Observer1和Observer2必然變化。AbstractSubject類中定義著需要監控的對象列表,可以對其進行修改:增加或刪除被監控對象,且當MySubject變化時,負責通知在列表內存在的對象。我們看實現代碼:
一個Observer接口:

public interface Observer {   public void update(); } 

兩個實現類:

public class Observer1 implements Observer {    @Override   public void update() {     System.out.println("observer1 has received!");   } } public class Observer2 implements Observer {    @Override   public void update() {     System.out.println("observer2 has received!");   }  } 

Subject接口及實現類:

public interface Subject {      /*增加觀察者*/   public void add(Observer observer);      /*刪除觀察者*/   public void del(Observer observer);      /*通知所有的觀察者*/   public void notifyObservers();      /*自身的操作*/   public void operation(); } public abstract class AbstractSubject implements Subject {    private Vector<Observer> vector = new Vector<Observer>();   @Override   public void add(Observer observer) {     vector.add(observer);   }    @Override   public void del(Observer observer) {     vector.remove(observer);   }    @Override   public void notifyObservers() {     Enumeration<Observer> enumo = vector.elements();     while(enumo.hasMoreElements()){       enumo.nextElement().update();     }   } } public class MySubject extends AbstractSubject {    @Override   public void operation() {     System.out.println("update self!");     notifyObservers();   }  } 

測試類:

public class ObserverTest {    public static void main(String[] args) {     Subject sub = new MySubject();     sub.add(new Observer1());     sub.add(new Observer2());          sub.operation();   }  

介紹
意圖:定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。

主要解決:一個對象狀態改變給其他對象通知的問題,而且要考慮到易用和低耦合,保證高度的協作。

何時使用:一個對象(目標對象)的狀態發生改變,所有的依賴對象(觀察者對象)都將得到通知,進行廣播通知。

如何解決:使用面向對象技術,可以將這種依賴關系弱化。

關鍵代碼:在抽象類里有一個 ArrayList 存放觀察者們。

應用實例:

1、拍賣的時候,拍賣師觀察最高標價,然后通知給其他競價者競價。
2、西游記里面悟空請求菩薩降服紅孩兒,菩薩灑了一地水招來一個老烏龜,這個烏龜就是觀察者,他觀察菩薩灑水這個動作。

優點:

1、觀察者和被觀察者是抽象耦合的。
2、建立一套觸發機制。

缺點:

1、如果一個被觀察者對象有很多的直接和間接的觀察者的話,將所有的觀察者都通知到會花費很多時間。
2、如果在觀察者和觀察目標之間有循環依賴的話,觀察目標會觸發它們之間進行循環調用,可能導致系統崩潰。 3、觀察者模式沒有相應的機制讓觀察者知道所觀察的目標對象是怎么發生變化的,而僅僅只是知道觀察目標發生了變化。

使用場景:

一個抽象模型有兩個方面,其中一個方面依賴于另一個方面。將這些方面封裝在獨立的對象中使它們可以各自獨立地改變和復用。
一個對象的改變將導致其他一個或多個對象也發生改變,而不知道具體有多少對象將發生改變,可以降低對象之間的耦合度。
一個對象必須通知其他對象,而并不知道這些對象是誰。
需要在系統中創建一個觸發鏈,A對象的行為將影響B對象,B對象的行為將影響C對象……,可以使用觀察者模式創建一種鏈式觸發機制。

注意事項:

1、JAVA 中已經有了對觀察者模式的支持類。
2、避免循環引用。
3、如果順序執行,某一觀察者錯誤會導致系統卡殼,一般采用異步方式。

以上所述是小編給大家介紹的Java設計模式—觀察者模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产福利在线| 成人免费一区二区三区牛牛| 中文字幕一区免费| 国产在线拍揄自揄拍视频| 国产不卡在线| 亚洲视频精品在线观看| 免费在线超碰| 国产日韩欧美第一页| 精品美女在线观看视频在线观看| av高清在线| 日本一级理论片在线大全| 欧美韩日国产| 国产精品欧美色图| www.狠狠| 国产精品美女视频免费观看软件 | 国产乱子视频| 国产福利片在线| 日本福利在线观看| 午夜视频在线| 在线观看午夜av| 国产野外战在线播放| 青青九九免费视频在线| 9色在线视频网站| 久久亚洲国产成人亚| 精品176二区| 国产精品久久久精品a级小说| www.操操操.com| 国产成免费视频| 超碰免费在线| 精品国产高清a毛片无毒不卡| 成网站在线观看人免费| 精品欧美不卡一区二区在线观看| 国产美女性感在线观看懂色av| 亚洲综合激情六月婷婷在线观看| 国产精品不卡一区二区三区在线观看| 久热精品免费视频| 人人干人人插| xxxx视频在线| 青草av在线| 激情丁香婷婷| 黄网在线免费| 国产尤物一区二区三区| 九七电影韩国女主播在线观看| 精品99又大又爽又硬少妇毛片| 91久久精品国产性色| 在线看黄网址| 日韩中文字幕久久久经典网| 欧美96在线| 国产免费福利网站| 中文字幕在线观看av| 国产亚洲依依| 国产成人精品综合网站| 亚洲社区在线| 九九热免费视频| 国产三级在线免费观看| 在线天堂中文www视软件| 亚洲一道本在线| 免费看ww视频网站入口| 免费视频二区| 国产九九在线| 国产成a人亚洲精v品| 伊人伊人av电影| 日本调教视频在线观看| 九九视频在线播放| 国产精品人人| www.xxx黄| 天堂中文在线视频| 精品推荐蜜桃传媒| 欧美一级久久久久久久久大| 国精一区二区三区| 91看片在线观看| 天天av天天爱| xxxxx中文字幕| 成在在线免费视频| 国产精品毛片一区二区三区四区 | 国产三级视频在线| 亚洲色婷婷综合开心网| 国产一级黄色电影| 99久热re在线精彩视频| 国产精品综合久久久久| 在线观看中文字幕一区| 国产三级香港三韩国三级| 蜜桃视频中文字幕| 亚洲私人影吧| 精品一区二区三区免费站| 国产女王在线**视频| av丝袜在线| 国产激情视频一区二区三区| 二人午夜免费观看在线视频| av中文在线| av免费在线一区二区三区| 国产高清视频在线观看| 中文字幕在线观看日本| 九九热在线视频免费观看| 欧美一级久久久久久久久大| 性欧美精品xxxx| 在线国产小视频| 精品极品三级久久久久| 国产盗摄一区二区| 国产精品美女一区二区视频| 国产精品视频一区二区免费不卡 | 一本久久精品| av在线播放av| 奇米影视狠狠狠| 人人干人人插| 麻豆精品免费视频入口| 久久久久国产精品嫩草影院| wwwww在线观看免费视频| 六月天色婷婷| 1区2区视频| 国产精品久久在线| 精品国内自产拍在线视频| 国产l精品国产亚洲区在线观看| 国产黄色片在线播放| 中文岛国精品亚洲一区| wwww在线观看免费视频| 成人精品福利| 国产aa视频| jlzzjlzz欧美大全| 国产美女自拍视频| 国产导航在线| 男人操女人免费网站| 国产剧情av在线| 国产成人亚洲精品播放器下载| 国产福利在线视频| 在线观看免费高清完整| 成av人免费青青久| 中文字幕日本三级| 国产激情在线| 麻豆精品免费视频入口| 国产激情视频在线| 欧美成人精品福利网站| 国产福利av网站| 国产资源在线看| 在线观看国产福利视频| 国产精品一区二区三区高清在线| 在线亚洲精品自拍| 中文字幕成人乱码在线电影| 免费影视观看网站入口| 精品无人乱码| 国产激情视频一区二区| 国产精品一区二区三区视频网站| 国产国产人免费人成免费视频| 日本在线观看| 国产精品久久久久一区二区国产| 开心婷婷激情| 欧美专区日韩| av免费在线一区二区三区| 国产深夜福利| 国产在线观看18| 男人天堂亚洲| 美女国产在线| 毛片网站在线观看| 免费午夜一级| 日本电影全部在线观看网站视频| 91在线超碰| 精精国产xxxx视频在线| 国产免费黄网站| 天堂亚洲精品| 国产在线高清| 中文字幕麻豆| 国产一级大片| 国产黄色在线看| 91国内精品在线视频| 国产成人亚洲精品播放器下载| 国产亚av手机在线观看 | 黄色av免费看| 高清av中文在线字幕观看1| а√天堂www在线а√天堂视频| 99中文字幕一区| av在线天天| 小说区乱图片区| 老师我好爽再深一点的视频| www网站在线观看| 奇米影视狠狠狠| 国产一级视频| 91涩漫在线观看c| 波多野结衣中文字幕久久| 久久国产精品黑丝| 国产天堂资源| av在线不卡网站| 天堂中文资源在线| 国产va在线观看| 青青草原国产在线| 午夜av在线播放| 91这里只有精品| 香蕉视频在线看| 日本中文字幕在线播放| 精品美女调教视频| 久热国产在线| 在线免费观看黄色片| 国产黄色在线播放| 国产精品一区二区资源| 天天爱天天色| 中文av资源在线| 国产原创在线播放| 羞羞视频在线观看免费| 成人免费一区二区三区视频网站| 国产精品自产拍在线网站| 在线视频三级|