觀察者模式


import java.util.LinkedList;
import java.util.List;


public class EventManager {
    private List<EventObserver> mEventObserver;
    private static EventManager sInstance;

    public synchronized static EventManager getInstance(){
        if (sInstance==null)
            sInstance=new EventManager();
        return sInstance;
    }

    public EventManager() {
        mEventObserver = new LinkedList<EventObserver>();
    }

    public void registerEventObserver(EventObserver ob) {
        synchronized (mEventObserver) {
            if (!mEventObserver.contains(ob)) {
                mEventObserver.add(ob);
            }
        }
    }


    public void unregisterEventObserver(EventObserver ob) {
        synchronized (mEventObserver) {
            mEventObserver.remove(ob);
        }
    }

    public void notifyEventHappened() {
        synchronized (mEventObserver) {
            for (EventObserver ob : mEventObserver) {
                ob.onEventHappened();
            }
        }
    }



    public interface EventObserver {

        public void onEventHappened();
    }
}


EventManager管理者某些事件的處理,其他類實現EventObserver,EventManager通過registerEventObserver方法將它們註冊成自己的監聽器,存放在監聽器鏈表裏。

當事件發生時,EventManager通過notifyEventHappened來通知鏈表中的所有監聽器執行它們實現的onEventHappened()方法進行相應處理。


之前寫過一篇java回調函數



發佈了54 篇原創文章 · 獲贊 13 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章