关于事件监听我们需要知道的一些基础知识。
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()); } }