事件監聽器模式
阿新 • • 發佈:2021-02-20
事 件 監 聽 器 模 式
監聽器將監聽感興趣的事件,一旦事件發生,便做出響應
其涉及到的三個元件:
事件源(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);
}
}
執行結果:
=========================
雙擊被觸發了
=========================