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回调函数