public interface IEventListener extends EventListener { void onApplicationEvent(E event);}
复制代码
界说一个事件监听接口供事件监听类实现
3.事件管理器
public class EventMulticaster { private Set set = new LinkedHashSet(); public void registerListener(IEventListener listener) { if (!set.contains(listener)) { set.add(listener); } } public void removeListener(IEventListener listener) { if (!set.contains(listener)) { set.remove(listener); } } public Set getEventListeners() { return set; }}
复制代码
界说一个事件管理器,存储事件监听以及对事件监听的增删操纵
4.事件发布器
public class EventPublisher { private EventMulticaster eventMulticaster; public void initEventMulticaster() { if (eventMulticaster == null) { eventMulticaster = new EventMulticaster(); } } public void registerListener(IEventListener listener) { if (eventMulticaster != null) { eventMulticaster.registerListener(listener); } } public void removeListener(IEventListener listener) { if (eventMulticaster != null) { eventMulticaster.removeListener(listener); } } public void publishEvent(EventObject eventObject) { if (eventMulticaster != null) { Set set = eventMulticaster.getEventListeners(); for (IEventListener listener : set) { listener.onApplicationEvent(eventObject); } } }}
public class OrderEvent extends EventObject { public OrderEvent(Object source) { super(source); }}
复制代码
库存监听
public class StoreListener implements IEventListener{ @Override public void onApplicationEvent(OrderEvent event) { System.out.println("库存服务运行中……"); }}
复制代码
物流监听
public class LogisticsListener implements IEventListener { @Override public void onApplicationEvent(OrderEvent event) { System.out.println("物流服务运行中……"); }}