事件分发机制,就好比部门领导给下属分活,不同的活可以分配给不同的人去做,领导分活这个过程不占用时间,所有公司boss所有的事情都扔给部门领导就行了。boss不需要关心是谁干了活。
以上是一些简单的描述,懂了就懂了。下面说一下事件分发机制和消息机制的一点点区别,事件驱动就是来了就派给指定的人,消息机制就是部门领导不停回去问有那些消息或者事件需要处理,或者是pull和push的区别。
消息机制需要一个消息循环队列不停地遍历,当出现消息选择不处理或者选择相应的处理方式,最典型的就是键盘消息,使用switch+callback模式。
下面进入正题,要实现事件分发机制的步骤。
1.创建一个事件引擎,可以注册事件的类型,以及处理该事件类型的handler。
2.需要一个事件队列,存放事件源。
3.需要实现事件发布的接口。
4.编写至少一种事件处理handler。
java代码实现:
1.事件引擎
public abstract class AbstractEventEngine {
protected final Logger logger = LoggerFactory.getLogger(getClass());
protected Map<EventType, LinkedList<Pair<Event, EventHandler<Event, Boolean>>>> listeners;
public AbstractEventEngine() {
listeners = new HashMap<EventType, LinkedLis