觀察者模式

1類圖

這裏寫圖片描述

2定義:

2.1 定義了對象間的一種一對多的依賴關係,以便一個對象的狀態發生變化時,所有依賴於它的對象都得到通知並自動刷新。

3應用場景:

3.1 關聯行爲場景,需要注意得是,關聯行爲是可拆分的,而不是“組合”是。

3.2 事件多級觸發場景。

3.3 跨系統的消息交換場景,如消息隊列,事件總線的處理機制 。

4觀察者

public class Coder implements Observer {

    public String name;

    public Coder(String name){
        this.name = name;
    }

    @Override
    public void update(Observable o, Object arg) {
        System.out.println("Hi, " + name + ", 海賊王更新了,內容 : " + arg);
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "海迷 : " + name;
    }
}

5被觀察者

public class DevTechFrontier extends Observable {
    public void postNewPublication(String content){
        setChanged();
        notifyObservers(content);
    }
}

6測試

public class Test {
    public static void main(String[] args) {
        DevTechFrontier devTechFrontier = new DevTechFrontier();

        Coder h1 = new Coder("海迷-1");
        Coder h2 = new Coder("海迷-2");
        Coder h3 = new Coder("海迷-3");

        devTechFrontier.addObserver(h1);
        devTechFrontier.addObserver(h2);
        devTechFrontier.addObserver(h3);

        devTechFrontier.postNewPublication("索羅開眼了!");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章