观察者模式

来源:互联网 发布:温泉洗浴软件 编辑:程序博客网 时间:2024/06/07 18:55
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回调函数


                                             
0 0
原创粉丝点击