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

Java設(shè)計(jì)模式探究之觀察者模式詳解

 更新時(shí)間:2022年08月29日 09:04:18   作者:niuyongzhi  
這篇文章主要為大家詳細(xì)介紹了JAVA的觀察者模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

1.觀察者模式是什么

顧名思義,有兩個(gè)對(duì)象,觀察者和被觀察者。當(dāng)被觀察者數(shù)據(jù)發(fā)生變化時(shí),提醒觀察者更新數(shù)據(jù)或狀態(tài)。

2.如何實(shí)現(xiàn)

1)定義兩個(gè)類(lèi),觀察者和被觀察者。

2)被觀察者要維護(hù)一個(gè)集合,存放觀察者對(duì)象。并且提供增刪方法。

3)被觀察者數(shù)據(jù)發(fā)生變化時(shí),要調(diào)用觀察者的方法,以便通知觀察者更新數(shù)據(jù)或狀態(tài)。

4)基于面向抽象原則,可以將觀察者和被觀察者中的方法提取接口中。

3.代碼實(shí)現(xiàn)

1)觀察者接口

/**
 * 抽象觀察者接口
 */
public interface Observer {
    /**
     * 抽象方法
     */
    public void uPdate();
    public void remove();
}

2)被觀察者接口

/**
 * 抽象被觀察者
 */
public interface Observed {
    public void addObserver(Observer observer);
    public void deleteObserver(Observer observer);
    public void notifyObservers();
}

3)觀察者實(shí)現(xiàn)

/**
 * 觀察者實(shí)現(xiàn)
 */
public class ObserverImpl implements Observer {
    public ObserverImpl(){
    }
    @Override
    public void uPdate() {
        System.out.println("update....");
    }
}

4)被觀察者實(shí)現(xiàn)

/**
 * 觀察者實(shí)現(xiàn)
 */
public class ObserverImpl implements Observer {
    public ObserverImpl(){
    }
    private Observed observed;
    public ObserverImpl(Observed observed){
        this.observed = observed;
        observed.addObserver(this);
    }
    @Override
    public void uPdate() {
        System.out.println("觀察者更新數(shù)據(jù)變化....");
    }
    @Override
    public void remove() {
        if(observed!=null){
            observed.deleteObserver(this);
        }
    }
}

5)測(cè)試類(lèi)

public class TestObserver {
    public static void main(String args []){
        ObservedImpl subject = new ObservedImpl();
        ObserverImpl observer1 =  new ObserverImpl(subject);
        subject.notifyObservers();
    }
}

4.延伸拓展

在Android的代碼中,有很多地方用到了觀察者模式。

Android的廣播機(jī)制,就是采用的觀察者模式。

我們創(chuàng)建一個(gè)廣播接收者,來(lái)接收系統(tǒng)廣播。在Android源碼中,其實(shí)就維護(hù)了一個(gè)接收者的集合,用于存放所有的廣播接收者。

到此這篇關(guān)于Java設(shè)計(jì)模式探究之觀察者模式詳解的文章就介紹到這了,更多相關(guān)Java觀察者模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Spring中自動(dòng)裝配Bean的屬性

    在Spring中自動(dòng)裝配Bean的屬性

    今天小編就為大家分享一篇關(guān)于在Spring中自動(dòng)裝配Bean的屬性,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Java動(dòng)態(tài)追蹤技術(shù)探究之從JSP到Arthas

    Java動(dòng)態(tài)追蹤技術(shù)探究之從JSP到Arthas

    這篇文章主要介紹了Java動(dòng)態(tài)追蹤技術(shù)探究之從JSP到Arthas,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • Java中ArrayList類(lèi)的使用方法

    Java中ArrayList類(lèi)的使用方法

    ArrayList就是傳說(shuō)中的動(dòng)態(tài)數(shù)組,用MSDN中的說(shuō)法,就是Array的復(fù)雜版本,下面來(lái)簡(jiǎn)單介紹下
    2013-12-12
  • Java框架設(shè)計(jì)靈魂之反射的示例詳解

    Java框架設(shè)計(jì)靈魂之反射的示例詳解

    反射就是把Java類(lèi)中的各個(gè)成員映射成一個(gè)個(gè)的Java對(duì)象。本文將通過(guò)示例為大家詳細(xì)講解Java框架設(shè)計(jì)的靈魂:反射,感興趣的可以了解一下
    2022-06-06
  • 分模塊構(gòu)建Maven工程的方法步驟

    分模塊構(gòu)建Maven工程的方法步驟

    這篇文章主要介紹了分模塊構(gòu)建Maven工程的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java將word文件轉(zhuǎn)成pdf文件的操作方法

    Java將word文件轉(zhuǎn)成pdf文件的操作方法

    這篇文章主要介紹了Java將word文件轉(zhuǎn)成pdf文件的操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • 項(xiàng)目依賴Springboot jar失敗解決方案

    項(xiàng)目依賴Springboot jar失敗解決方案

    這篇文章主要介紹了項(xiàng)目依賴Springboot jar失敗解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot注冊(cè)FilterRegistrationBean相關(guān)情況講解

    SpringBoot注冊(cè)FilterRegistrationBean相關(guān)情況講解

    這篇文章主要介紹了SpringBoot注冊(cè)FilterRegistrationBean相關(guān)情況,借助FilterRegistrationBean來(lái)注冊(cè)filter,可以避免在web.xml種配置filter這種原始的寫(xiě)法
    2023-02-02
  • 詳解Mybatis框架SQL防注入指南

    詳解Mybatis框架SQL防注入指南

    這篇文章主要介紹了詳解Mybatis框架SQL防注入指南,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring如何使用注解的方式創(chuàng)建bean

    Spring如何使用注解的方式創(chuàng)建bean

    這篇文章主要介紹了Spring如何使用注解的方式創(chuàng)建bean,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論

壤塘县| 磐石市| 四会市| 革吉县| 湖州市| 合江县| 麻城市| 界首市| 阳西县| 哈巴河县| 晋江市| 伊春市| 永春县| 右玉县| 衡水市| 绵阳市| 增城市| 宣化县| 蒙自县| 平江县| 连州市| 武宁县| 永德县| 阜城县| 阜城县| 大渡口区| 河北区| 田林县| 临潭县| 昭通市| 陕西省| 凭祥市| 海原县| 重庆市| 高安市| 塔河县| 台中县| 大方县| 安图县| 三亚市| 和田市|