設計模式-觀察者模式

觀察者模式分析

定義一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態上發生變化時,會通知所有觀察者對象,使他們能夠自動更新自己。

類圖示例
在這裏插入圖片描述

代碼示例

//觀察者模式
public class ObserverModule {

    static interface Observerable {
        public void registerObserver(Observer o);

        public void removeObserver(Observer o);

        public void notifyObserver();
    }

    static interface Observer {
        public void update(String msg);
    }

    static class UserAttrObserverable implements Observerable {

        List<Observer> mList = new ArrayList<Observer>();

        @Override
        public void registerObserver(Observer o) {
            mList.add(o);
        }

        @Override
        public void removeObserver(Observer o) {
            mList.remove(o);
        }

        @Override
        public void notifyObserver() {
            for (Observer observer : mList){
                observer.update("這裏是通知消息");
            }
        }
    }

    static class UserAttrObserver implements Observer{
        private String name;
        
        public UserAttrObserver(String name) {
            this.name = name;
        }

        @Override
        public void update(String msg) {
            System.out.println(name+"----"+msg);
        }
    }

    public static void main(String[] args){
        Observerable userAttrObserverable = new UserAttrObserverable();
        Observer observer1 = new UserAttrObserver("observer1");
        Observer observer2 = new UserAttrObserver("observer2");
        Observer observer3 = new UserAttrObserver("observer3");

        userAttrObserverable.registerObserver(observer1);
        userAttrObserverable.registerObserver(observer2);
        userAttrObserverable.registerObserver(observer3);

        userAttrObserverable.removeObserver(observer1);
        userAttrObserverable.notifyObserver();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章