模拟几java中的事件监听机制(观察者模式)

事件监听机制

事件监听机制主要部分

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 listeners=new ArrayList();
	//构造函数注册监听者(方式一)
	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方法

你可能感兴趣的:(事件监听机制,java观察者模式,java,java)