事件监听器模式
事 件 监 听 器 模 式
监听器将监听感兴趣的事件,一旦事件发生,便做出响应
其涉及到的三个组件:
事件源(Event Source)
事件监听器(Event Listener)
事件对象(Event Object)
代码演示:
创建Event(事件类)
@Getter @Setter public class Event { private String type; }
创建EventListener(事件监听接口)
public interface EventListener { public void processEvent(Event event); }
创建SingleClickEventListener(单击事件监听器)(实现了事件监听接口)
public class SingleClickEventListener implements EventListener { @Override public void processEvent(Event event) { if("singleclick".equals(event.getType())){ System.out.println("单击被触发了"); } } }
创建DoubleClickEventListener(双击事件监听器)(实现了事件监听接口)
public class DoubleClickEventListener implements EventListener { @Override public void processEvent(Event event) { if("doubleclick".equals(event.getType())){ System.out.println("双击被触发了"); } } }
创建EventSource (事件源)
public class EventSource { private List<EventListener> listenerList = new ArrayList<>(); public void register(EventListener listener){ listenerList.add(listener); } public void publishEvent(Event event){ for (EventListener listener:listenerList){ listener.processEvent(event); } } }
=====================================================
此时我们创建Demo中的main方法进行测试
public class EventModeDemo { public static void main(String[] args) { EventSource eventSource = new EventSource(); SingleClickEventListener singleClickEventListener = new SingleClickEventListener(); DoubleClickEventListener doubleClickEventListener = new DoubleClickEventListener();
Event event = new Event();
event.setType("doubleclick");
eventSource.register(singleClickEventListener); eventSource.register(doubleClickEventListener); eventSource.publishEvent(event); } }
运行结果:
=========================
双击被触发了
=========================
日拱一卒无有尽,功不唐捐终入海