【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; } }
相关文章推荐
- Java简介及开发配置
- spring 事务疑惑
- Map接口及其重要实现类的用法
- Eclipse中使用lombok
- SpringMVC_数据回显
- java Pattern和Matcher详解
- Java基础随笔-对初始化顺序的学习
- 圣思园java se培训总结(10-16)面向对象封装
- JAVA输入
- Win7下面设置Eclipse所加载JAVA_HOME的路径
- java 读写 模板文件-分享
- 用户权限spring security
- java回顾巩固
- java.util.logging无配置文件全局日志管理案例
- java socket编程服务器接收不到数据
- SpringMVC @ResponseBody 乱码
- Java中的this,final,static关键字
- JavaEE_Mybatis_SpringMVC_整合开发奇葩问题1:dataSource报错?
- MyEclipse10采用links安装插件的方法
- 关于java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream解决办法