事件监听机制
事件监听机制主要部分
l事件源 (对应的类EventSource)
l事件 (单击、双击等,这里用调用EventSource类中的test1方法模拟事件)
l事件处理
(重写EventListening中的eventchange方法实现事件处理)
l事件监听器 (EventListening 子类对象)
实现流程
1.通过事件源对象的方法将侦听器注册到该事件源上,EventSource通过构造方法和addListener方法
2.触发事件(通过调用test1()方法)
3.执行事件处理方式(重写的eventChange()方法)
package ObserverDesignPattern;
import java.util.ArrayList;
import java.util.List;
/*
* 事件源类
*/
public class EventSource {
//事件监听者集合
List<EventListening> listeners=new ArrayList<EventListening>();
//构造函数注册监听者(方式一)
public EventSource(EventListening a) {
listeners.add(a);
}
//通过该方法注册监听者(方式二)
public void addListener(EventListening a){
listeners.add(a);
}
//事件源,调用执行此方法将触发事件侦听器的eventChange方法
public void test1(){
System.out.println("test方法");
//告诉注册了的侦听器执行相应的动作(执行eventChange())
for(EventListening a:listeners){
a.eventChange();
}
}
}
package ObserverDesignPattern;
/*
* 侦听器接口
* 向事件源注册他的子类,或者实现其匿名内部类
*/
public interface EventListening {
public void eventChange();
}
package ObserverDesignPattern;
public class Client {
public static void main(String[] args) {
EventSource a=new EventSource(new EventListening() {
public void eventChange() {
System.out.println("监听者发现:调用了EventOccurrence的test1方法");
}
});
a.test1();
}
}
测试结果:test方法
监听者发现:调用了EventOccurrence的test1方法
监听者发现:调用了EventOccurrence的test1方法