zoukankan      html  css  js  c++  java
  • 【java】简单的事件总线EventBus

    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;
        }
    
    }
    

      

  • 相关阅读:
    SSH框架——(二)四层结构:DAO,Service,Controller,View层
    Spring知识概括梳理
    设计模式——(一)工厂模式2
    设计模式——(一)工厂模式1
    Spring——(一)IoC
    Toad 实现 SQL 优化
    string 和String的区别
    StructureMap依赖注入
    Oracle/PLSQL: BitAnd Function
    log.debug(e.getMessage());
  • 原文地址:https://www.cnblogs.com/lhp2012/p/5019141.html
Copyright © 2011-2022 走看看