1. 程式人生 > 其它 >事件監聽器模式

事件監聽器模式

技術標籤:eventepolljavajs小程式

事 件 監 聽 器 模 式

  監聽器將監聽感興趣的事件,一旦事件發生,便做出響應

其涉及到的三個元件:

  事件源(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); } }

執行結果:

=========================

雙擊被觸發了

=========================