6 Matching Annotations
  1. Feb 2025
    1. 组合事件类和监听器,发布事件。有了自定义事件和自定义事件监听器,剩下的就是发布事件,然后让相应的监听器监听并处理事件了。通常情况下,我们会有一个事件发布者(EventPublisher),它本身作为事件源,会在合适的时点,将相应事件发布给对应的事件监听器。

      在代码中,我们会看到,一个事件发布者的角色内含了一个事件监听器列表。同时实现了一个方法执行到监听器的方法,进而触发事件发布方法,以及管理事件监听器的方法。

    2. 代码清单5-13 自定义事件监听器MethodExecutionEventListener定义 2public interface MethodExecutionEventListener extends EventListener {/**3* 处理方法开始执行的时候发布的MethodExecutionEvent事件*/void onMethodBegin(MethodExecutionEvent evt);/**4* 处理方法执行将结束时候发布的MethodExecutionEvent事件*/void onMethodEnd(MethodExecutionEvent evt);5}事件监听器接口定义首先继承了java.util.EventListener,然后针对不同的事件发布时机提供相应的处理方法定义,最主要的就是,这些处理方法所接受的参数就是MethodExecutionEvent类型的事件。也就是说,我们的自定义事件监听器类只负责监听其对应的自定义事件并进行处理

      事件监听器接口应该继承EventListener,实现该接口的类仅仅处理目标事件类

    3. 代码清单5-12 针对方法执行事件的自定义事件类型定义public class MethodExecutionEvent extends EventObject {private static final long serialVersionUID = -71960369269303337L;private String methodName;public MethodExecutionEvent(Object source) {super(source);}public MethodExecutionEvent(Object source,String methodName){super(source);this.methodName = methodName;}public String getMethodName() {return methodName;}public void setMethodName(String methodName) {this.methodName = methodName;}}我们想对方法的执行情况进行发布和监听,所以,就声明了一个MethodExecutionEvent类型,它继承自EventObject,当该类型的事件发布之后,相应的监听器即可对该类型的事件进行处理。如果需要,自定义事件类可以根据情况提供更多信息,不用担心自定义事件类的“承受力”。

      创建一个自定义事件的做法,关键在于继承的类。以及其中的serialVersionUID。