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回調函數