正式开始之前,先设置这样一个场景:
进大楼的门口有监控(Listener),这个监控可以监控到是否有人走进来(人走进来为一个事件Event),当监控到人要进来时,会自动将门打开(将门打开这个动作为我们真正要执行的逻辑Action),人为什么要进这个大楼呢?促使人做这件事的必然有一个驱使者,而这个人的角色即为事件的调用者(doMain)。
以上场景可知,事件处理必备的部分:监听(Listener),事件(Event),业务逻辑(Action),整个过程的调用者(doMain)
----------------------------------------------------------------------------------------------------
java中的事件机制的参与者有3种角色:
1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中
2.event source:具体的事件源,比如说,你点击一个button,那么button就是event source,要想使button对某些事件进行响应,你就需要注册特定的listener。
3.event listener:对每个明确的事件的发生,都相应地定义一个明确的Java方法。这些方法都集中定义在事件监听者(EventListener)接口中,这个接口要继承 java.util.EventListener。 实现了事件监听者接口中一些或全部方法的类就是事件监听者。
伴随着事件的发生,相应的状态通常都封装在事件状态对象中,该对象必须继承自java.util.EventObject。事件状态对象作为单参传递给应响应该事件的监听者方法中。发出某种特定事件的事件源的标识是:遵从规定的设计格式为事件监听者定义注册方法,并接受对指定事件监听者接口实例的引用。
具体的对监听的事件类,当它监听到event object产生的时候,它就调用相应的方法,进行处理。
先看看jdk提供的event包:
public interface EventListener:所有事件侦听器接口必须扩展的标记接口。
public class EventObject extends Object implements Serializable
所有事件状态对象都将从其派生的根类。 所有 Event 在构造时都引用了对象 "source",在逻辑上认为该对象是最初发生有关 Event 的对象。
之前在网上看的一哥们儿些的demo共理解
1.新建的监听接口,实现EventListener接口
2.新建监听1,2,3 分别实现1中的接口,将doorEvent方法重写。大概意思就是在方法中传入一个事件Event对象,判断Event对象的状态来执行不同的逻辑
3.看下事件Event是个什么鬼?
Event事件对象实现了EventObject接口,改事件中有关于事件的不同的状态,改状态是通过set方法来修改
4.触发事件的逻辑
先将事件对象中的状态修改后,再对之前设置的几个监听类已经轮询,轮询的内容如下:
调用监听中的逻辑方法,在监听中判断时间Event的状态
5.调用嘛,就直接调用就好了
在实际的的测试中吧时间和监听实现的接口都去了,这段代码的逻辑还是能执行,
可能实现这些接口的意思就是为了是容器能够识别到这个监听和事件吧!!