11、设计模式

1、观察者模式

EventObject 和 EventListener 是用于实现事件处理的关键类和接口

  • EventObject 是一个抽象类,它代表事件对象,包含了事件源对象、事件 ID 等信息
    你可以通过继承 EventObject 来创建自定义的事件类
  • EventListener 是一个接口,用于定义事件监听器
    实现了 EventListener 接口的类可以注册到特定的事件源对象上,以监听并处理事件
// 事件
public class MyEvent extends EventObject {

    private int eventId;

    public MyEvent(Object source, int eventId) {
        super(source);
        this.eventId = eventId;
    }

    public int getEventId() {
        return eventId;
    }
}
// 观察者
public class MyEventListener implements EventListener {

    public void handleEvent(MyEvent event) {
        // 处理事件的具体逻辑
        int id = event.getEventId();
        System.out.println("Event received: " + id);
    }
}
// 被观察者
public class EventSource {

    private List<EventListener> listeners = new ArrayList<>();

    public void addEventListener(EventListener listener) {
        listeners.add(listener);
    }

    public void removeEventListener(EventListener listener) {
        listeners.remove(listener);
    }

    public void fireEvent(EventObject event) {
        for (EventListener listener : listeners) {
            // 判断监听器是否为 MyEventListener 类的实例
            if (listener instanceof MyEventListener) {
                ((MyEventListener) listener).handleEvent((MyEvent) event);
            }
        }
    }
}
public class Main {

    public static void main(String[] args) {
        EventSource source = new EventSource();
        MyEventListener listener = new MyEventListener();
        source.addEventListener(listener);

        // 创建事件对象并触发事件
        MyEvent event = new MyEvent(source, 1);
        source.fireEvent(event);
    }
}
posted @ 2023-07-25 17:46  lidongdongdong~  阅读(34)  评论(0)    收藏  举报