您的位置:首页 > 编程语言 > Java开发

【java】简单的事件总线EventBus

2015-12-04 14:05 471 查看
public class EventBus {

private static Map<String, EventListener> eventListeners = new HashMap<>();

public static void addEventListener(EventListener listener) {
String listenerName = getListenerName(listener);
eventListeners.put(listenerName, listener);
}

public static void removeEventListener(EventListener listener) {
String listenerName = getListenerName(listener);
eventListeners.remove(listenerName);
}

public static void sendEvent(Event event) {
Collection<EventListener> listeners = eventListeners.values();
for (EventListener listener : listeners) {
if (listener != null) {
listener.onEvent(event);
}
}
}

private static String getListenerName(TMSEventListener listener) {
String listenerName = listener.getName();
if (StringUtils.isBlank(listenerName)) {
listenerName = listener.getClass().getName();
}
return listenerName;
}

}


public interface EventListener {

/**
* 监听到事件后会调用此函数
* @param event
*/
public void onEvent(Event event);

/**
* 事件监听器的唯一名字
* @return 字符串
*/
public String getName();
}


public class Event {

private String name;
private Object data;

public Event() {
}

public Event(String name,Object data) {
this.data = data;
this.name = name;
}

public Object getData() {
return data;
}

public void setData(Object data) {
this.data = data;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: