关于事件监听我们需要知道的一些基础知识。

a)事件三要素(who when what):

source     --    事件源
when       --    事件发生时间
message    --    事件主题消息,即希望通过事件传递出去的信息

 

 b)事件模型的构成:

event     --     事件
source    --     事件源
listener  --     事件监听器    

 

c)事件流转过程:

(1)事件源注册监听器 -> (2)事件发生 -> (3)通知监听器 -> (4)监听器处理

 

那么基于以上背景知识,我们来是实现一个简单的监听器,并测试一下事件监听的完整流程。

根据事件三要素设计出一个简单合理的事件载体:Event

public interface Event extends Serializable {

    Object getSource();

    Date getWhen();

    String getMessage();

    /**
     * 事件回调方法
     */
    void callback();
}

 

事件实现:MyEvent

public class MyEvent implements Event {

    private Log log = LogFactory.getLog(getClass());

    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    private Object source;

    private Date when;

    private String message;

    @Override
    public Object getSource() {
        return source;
    }

    public void setSource(Object source) {
        this.source = source;
    }

    @Override
    public Date getWhen() {
        return when;
    }

    public void setWhen(Date when) {
        this.when = when;
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public void callback() {
        log.info(toString());
    }

    @Override
    public String toString() {
        return "source: " + getSource() + ", message: " + getMessage() + ", when: " + sdf.format(getWhen());
    }
}
View Code

相关文章:

  • 2021-10-07
  • 2021-09-10
  • 2022-01-30
  • 2021-08-26
  • 2022-12-23
  • 2021-10-28
  • 2022-12-23
  • 2021-09-11
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-19
  • 2021-06-11
相关资源
相似解决方案