最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

輕松掌握Java觀察者模式

 更新時間:2016年09月29日 10:32:33   作者:斷了聯(lián)系  
這篇文章主要幫助大家輕松掌握Java觀察者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

定義:當對象間存在一對多關(guān)系時,則使用觀察者模式(Observer Pattern)。比如,當一個對象被修改時,則會自動通知它的依賴對象。

特點:

    1、觀察者和被觀察者是抽象耦合的。

    2、建立一套觸發(fā)機制。

企業(yè)級開發(fā)和常用框架中的應(yīng)用:Java自帶觀察者類,servlet中的filter,分布式的消息隊列

實例:

public class Demo {

 public static void main(String[] args) {
 ActualSubject subject = new ActualSubject();
 
 ObserverA o1 = new ObserverA();
 ObserverA o2 = new ObserverA();
 ObserverA o3 = new ObserverA();
 
 //訂閱消息
 subject.addObserver(o1);
 subject.addObserver(o2);
 subject.addObserver(o3);
 
 subject.setNews("今天天氣真好");
 
 }
}

/**
 * 觀察者接口
 */
interface Observer{
 public void update(Subject subject);
}

/**
 * 目標對象,廣播對象 
 */
class Subject{
 private List<Observer> list = new ArrayList<>();
 public void addObserver(Observer o){
 list.add(o);
 }
 public void removeObserver(Observer o){
 list.remove(o);
 }
 public void notifyAllObserver(){
 for(Observer o:list){
  o.update(this);
 }
 }
}

class ActualSubject extends Subject{
 private String news;
 public void setNews(String news) {
 this.news = news;
 System.out.println("我是廣播,我發(fā)出了一個消息");
 notifyAllObserver();
 }
 public String getNews() {
 return news;
 }
}

class ObserverA implements Observer{
 private String news;
 public void update(Subject subject) {
 setNews(((ActualSubject)subject).getNews());
 System.out.println("我是觀察者,我接收到一個我訂閱的廣播發(fā)出的消息,接下來我要做出響應(yīng)的操作");
 System.out.println(getNews());
 }
 public String getNews() {
 return news;
 }
 public void setNews(String news) {
 this.news = news;
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MybatisPlus使用Wrapper實現(xiàn)條件查詢功能

    MybatisPlus使用Wrapper實現(xiàn)條件查詢功能

    這篇文章主要介紹了MybatisPlus使用Wrapper實現(xiàn)查詢功能,使用它可以實現(xiàn)很多復(fù)雜的查詢,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 詳解Java中對象池的介紹與使用

    詳解Java中對象池的介紹與使用

    對象池,顧名思義就是一定數(shù)量的已經(jīng)創(chuàng)建好的對象(Object)的集合。這篇文章主要為大家介紹了Java中對象池的介紹與使用,感興趣的可以了解一下
    2023-02-02
  • 如何在java 8 stream表達式實現(xiàn)if/else邏輯

    如何在java 8 stream表達式實現(xiàn)if/else邏輯

    這篇文章主要介紹了如何在java 8 stream表達式實現(xiàn)if/else邏輯,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Springboot項目中單元測試時注入bean失敗的解決方案

    Springboot項目中單元測試時注入bean失敗的解決方案

    這篇文章主要介紹了Springboot項目中單元測試時注入bean失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java文件讀寫IO/NIO及性能比較詳細代碼及總結(jié)

    Java文件讀寫IO/NIO及性能比較詳細代碼及總結(jié)

    這篇文章主要介紹了Java文件讀寫IO/NIO及性能比較詳細代碼及總結(jié),具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java基于Javafaker生成測試數(shù)據(jù)

    Java基于Javafaker生成測試數(shù)據(jù)

    這篇文章主要介紹了Java基于Javafaker生成測試數(shù)據(jù)的方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • 重寫Java中的equals方法介紹

    重寫Java中的equals方法介紹

    這篇文章主要介紹了重寫Java中的equals方法介紹,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • IntelliJ IDEA中properties文件顯示亂碼問題的解決辦法

    IntelliJ IDEA中properties文件顯示亂碼問題的解決辦法

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中properties文件顯示亂碼問題的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • springboot實現(xiàn)自動郵件發(fā)送任務(wù)詳解

    springboot實現(xiàn)自動郵件發(fā)送任務(wù)詳解

    這篇文章主要介紹了Springboot中的郵件任務(wù),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-04-04
  • Maven項目打包成war包部署到Tomcat的方法

    Maven項目打包成war包部署到Tomcat的方法

    這篇文章主要介紹了Maven項目打包成war包部署到Tomcat的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06

最新評論

宁津县| 巴马| 海丰县| 堆龙德庆县| 石嘴山市| 阳新县| 泸水县| 平阳县| 麻城市| 大姚县| 阳高县| 阿合奇县| 新乐市| 乌兰县| 揭西县| 海丰县| 齐河县| 鲜城| 谷城县| 双鸭山市| 东宁县| 洪雅县| 鹰潭市| 台北市| 连江县| 田阳县| 尚义县| 江西省| 泾源县| 遵化市| 江都市| 孝昌县| 日土县| 丰镇市| 五原县| 乐清市| 东乌珠穆沁旗| 宜城市| 木兰县| 安图县| 包头市|