觀察者模式

觀察者模式

  • 當一個對象變化時,其它依賴該對象的對象都會收到通知,并且隨著變化!

定義一個接口

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!");
    }

}

在定義一個接口

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();
    }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1 場景問題# 1.1 訂閱報紙的過程## 來考慮實際生活中訂閱報紙的過程,這里簡單總結了一下,訂閱報紙的基本流程...
    七寸知架構閱讀 4,666評論 5 57
  • 觀察者模式中通常有兩個基本的概念主題:觀察者和被觀察者。當被觀察者狀態發生改變時,需要通知相應的觀察者,當然,每個...
    時待吾閱讀 1,082評論 0 2
  • 一、 概述 觀察者模式是對象的行為模式,又叫發布-訂閱(Publish/Subscribe)模式、模型-視圖(Mo...
    步積閱讀 1,310評論 0 1
  • 前言 Android的設計模式系列文章介紹,歡迎關注,持續更新中: Android的設計模式-設計模式的六大原則一...
    四月葡萄閱讀 30,608評論 7 64
  • 愛 愛啊 從來沒有計量的容器 它就像哲學里的神 自始困擾著人類的心智 它的神秘之處 在于不以 長度,高度,寬度來衡...
    EgoIsRomance閱讀 163評論 0 3