国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

設(shè)計(jì)模式——觀察者模式

187J3X1 / 2544人閱讀

摘要:簡介觀察者模式是行為型模式的一種,它定義了對象之間一種一對多的依賴關(guān)系,當(dāng)一個(gè)對象發(fā)生改變時(shí),依賴它的所有對象會(huì)被通知并且自動(dòng)更新,它符合對象之間松耦合的設(shè)計(jì)原則。具體觀察者各自實(shí)現(xiàn)接口方法,可以及時(shí)得到通知并更新。

1. 簡介

??觀察者模式(Observer)是行為型模式的一種,它定義了對象之間一種一對多的依賴關(guān)系,當(dāng)一個(gè)對象發(fā)生改變時(shí),依賴它的所有對象會(huì)被通知并且自動(dòng)更新,它符合對象之間松耦合的設(shè)計(jì)原則。

2. UML類圖

??Subject也就是被觀者擁有所有觀察者的引用,提供一個(gè)注冊觀察者與刪除觀察者的方法以及通知所有觀察者更新的方法。Observer是觀察者接口,為所有觀察者定義了一個(gè)方法,用于主題改變時(shí)更新自己。具體觀察者各自實(shí)現(xiàn)Observer接口方法,可以及時(shí)得到通知并更新。

3. 實(shí)例

Observe接口:

public interface Observer {
    void update();
}

具體觀察者:

public class ConcreteObserverA implements Observer {
    
    public void update() {
        System.out.println("觀察者A更新成功!");
    }
}

public class ConcreteObserverB implements Observer {

    public void update() {
        System.out.println("觀察者B更新成功!");
    }
}

public class ConcreteObserverC implements Observer {

    public void update() {
        System.out.println("觀察者C更新成功!");
    }
}

Subject類:

public interface Subject {
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObserver(Observer observer);
}

具體Subject類:

public class ConcreteSubject implements Subject {

    private List observers;
    
    public ConcreteSubject() {
        this.observers = new ArrayList();
    }
    
    public void registerObserver(Observer observer) {
        this.observers.add(observers);
    }
    
    public void removeObserver(Observer observer) {
        if (!observers.isEmpty()) {
            observers.remove(observer);
        }
    }
    
    public void notifyObserver() {
        for (Observer observer : this.observers) {
            observer.update();
        }
    }
}

測試:

public class Test {

    public static void main(String[] args) {
        Subject subject = new ConcreteSubject();
        Observer observerA = new ConcreteObserverA();
        Observer observerB = new ConcreteObserverB();
        Observer observerC = new ConcreteObserverC();
        
        //注冊觀察者
        subject.registerObserver(observerA);
        subject.registerObserver(observerB);
        subject.registerObserver(observerC);
        
        //通知更新
        subject.notifyObserver();
        
        //刪除觀察者
        subject.removeObserver(observerC);
    
        //通知更新
        subject.notifyObserver();
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71573.html

相關(guān)文章

  • 設(shè)計(jì)模式察者設(shè)計(jì)模式

    摘要:關(guān)鍵概念理解觀察者設(shè)計(jì)模式中主要區(qū)分兩個(gè)概念觀察者指觀察者對象,也就是消息的訂閱者被觀察者指要觀察的目標(biāo)對象,也就是消息的發(fā)布者。 原文首發(fā)于微信公眾號:jzman-blog,歡迎關(guān)注交流! 最近補(bǔ)一下設(shè)計(jì)模式相關(guān)的知識,關(guān)于觀察者設(shè)計(jì)模式主要從以下幾個(gè)方面來學(xué)習(xí),具體如下: 什么是觀察者設(shè)計(jì)模式 關(guān)鍵概念理解 通知觀察者的方式 觀察者模式的實(shí)現(xiàn) 觀察者模式的優(yōu)缺點(diǎn) 使用場景 下面...

    NotFound 評論0 收藏0
  • 設(shè)計(jì)模式察者模式與發(fā)布訂閱模式

    摘要:觀察者模式與發(fā)布訂閱的區(qū)別在模式中,知道,同時(shí)還保留了的記錄。發(fā)布者訂閱者在大多情況下是異步方式使用消息隊(duì)列。圖片源于網(wǎng)絡(luò)侵權(quán)必刪如果以結(jié)構(gòu)來分辨模式,發(fā)布訂閱模式相比觀察者模式多了一個(gè)中間件訂閱器,所以發(fā)布訂閱模式是不同于觀察者模式的。 學(xué)習(xí)了一段時(shí)間設(shè)計(jì)模式,當(dāng)學(xué)到觀察者模式和發(fā)布訂閱模式的時(shí)候遇到了很大的問題,這兩個(gè)模式有點(diǎn)類似,有點(diǎn)傻傻分不清楚,博客起因如此,開始對觀察者和發(fā)布...

    BaronZhang 評論0 收藏0
  • 設(shè)計(jì)模式 -- 察者模式

    摘要:總結(jié)一下從表面上看觀察者模式里,只有兩個(gè)角色觀察者被觀察者而發(fā)布訂閱模式,卻不僅僅只有發(fā)布者和訂閱者兩個(gè)角色,還有第三個(gè)角色經(jīng)紀(jì)人存在。參考鏈接觀察者模式發(fā)布訂閱模式 做了這么長時(shí)間的 菜鳥程序員 ,我好像還沒有寫過一篇關(guān)于設(shè)計(jì)模式的博客...咳咳...意外,純屬意外。所以,我決定,從這一刻起,我要把設(shè)計(jì)模式在從頭學(xué)習(xí)一遍,不然都對不起我這 菜鳥 的身份。那這次,就從觀察者模式開始好啦...

    chengtao1633 評論0 收藏0
  • 設(shè)計(jì)模式 -- 察者模式

    摘要:總結(jié)一下從表面上看觀察者模式里,只有兩個(gè)角色觀察者被觀察者而發(fā)布訂閱模式,卻不僅僅只有發(fā)布者和訂閱者兩個(gè)角色,還有第三個(gè)角色經(jīng)紀(jì)人存在。參考鏈接觀察者模式發(fā)布訂閱模式 做了這么長時(shí)間的 菜鳥程序員 ,我好像還沒有寫過一篇關(guān)于設(shè)計(jì)模式的博客...咳咳...意外,純屬意外。所以,我決定,從這一刻起,我要把設(shè)計(jì)模式在從頭學(xué)習(xí)一遍,不然都對不起我這 菜鳥 的身份。那這次,就從觀察者模式開始好啦...

    makeFoxPlay 評論0 收藏0
  • 訂閱發(fā)布模式察者模式的區(qū)別

    摘要:或許以前認(rèn)為訂閱發(fā)布模式是觀察者模式的一種別稱,但是發(fā)展至今,概念已經(jīng)有了不少區(qū)別。參考文章訂閱發(fā)布模式和觀察者模式真的不一樣 首選我們需要先了解兩者的定義和實(shí)現(xiàn)的方式,才能更好的區(qū)分兩者的不同點(diǎn)。 或許以前認(rèn)為訂閱發(fā)布模式是觀察者模式的一種別稱,但是發(fā)展至今,概念已經(jīng)有了不少區(qū)別。 訂閱發(fā)布模式 在軟件架構(gòu)中,發(fā)布-訂閱是一種消息范式,消息的發(fā)送者(稱為發(fā)布者)不會(huì)將消息直接發(fā)送給特...

    ysl_unh 評論0 收藏0
  • 設(shè)計(jì)模式-察者模式

    摘要:觀察者模式又稱發(fā)布訂閱模式,模型視圖模式,源監(jiān)聽器模式模式或者從屬者模式。第一方法被調(diào)用之后會(huì)設(shè)置一個(gè)內(nèi)部標(biāo)記變量,代表被觀察者對象的狀態(tài)發(fā)生了變化。代碼地址觀察者模式代碼自己實(shí)現(xiàn)的觀察者模式利用提供的有關(guān)觀察者模式的 概念 定義了對象之間的一對多依賴,當(dāng)一個(gè)對象狀態(tài)改變時(shí),它的所有依賴者都會(huì)收到通知并自動(dòng)更新。觀察者模式又稱發(fā)布(Publish/Subscribe)訂閱模式,模型視圖...

    Developer 評論0 收藏0

發(fā)表評論

0條評論

187J3X1

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<