java监听者模式代码 java监听按钮( 三 )


@Override
public void run() {
System.out.println("回调一个新线程!");
}}).start();
Callable也是一个回调接口 , 原来一直在用 。接下来我们开始讲事件监听器
事件监听模式
什么是事件监听器
监听器将监听自己感兴趣的事件一旦该事件被触发或改变,立即得到通知 , 做出响应 。例如:android程序中的Button事件 。
java的事件监听机制可概括为3点:
java的事件监听机制涉及到 事件源 , 事件监听器,事件对象 三个组件,监听器一般是接口,用来约定调用方式
当事件源对象上发生操作时,它将会调用事件监听器的一个方法 , 并在调用该方法时传递事件对象过去
事件监听器实现类,通常是由开发人员编写 , 开发人员通过事件对象拿到事件源,从而对事件源上的操作进行处理
举个例子
这里我为了方便,直接使用jdk,EventListener 监听器,感兴趣的可以去研究下源码,非常简单 。
监听器接口
public interface EventListener extends java.util.EventListener {
//事件处理
public void handleEvent(EventObject event);
}
事件对象
public class EventObject extends java.util.EventObject{
private static final long serialVersionUID = 1L;
public EventObject(Object source){
super(source);
}
public void doEvent(){
System.out.println("通知一个事件源 source :"+ this.getSource());
}
}
事件源
事件源是事件对象的入口 , 包含监听器的注册、撤销、通知
public class EventSource {
//监听器列表,监听器的注册则加入此列表
private VectorEventListener ListenerList = new VectorEventListener();
//注册监听器
public void addListener(EventListener eventListener){
ListenerList.add(eventListener);
}
//撤销注册
public void removeListener(EventListener eventListener){
ListenerList.remove(eventListener);
}
//接受外部事件
public void notifyListenerEvents(EventObject event){
for(EventListener eventListener:ListenerList){
eventListener.handleEvent(event);
}
}
}
测试执行
public static void main(String[] args) {
EventSource eventSource = new EventSource();
}
控制台显示:
通知一个事件源 source :openWindows
通知一个事件源 source :openWindows
doOpen something...
到这里你应该非常清楚的了解,什么是事件监听器模式了吧 。那么哪里是回调接口 , 哪里是回调者,对!EventListener是一个回调接口类,handleEvent是一个回调函数接口,通过回调模型 , EventSource 事件源便可回调具体监听器动作 。
有了了解后,这里还可以做一些变动 。对特定的事件提供特定的关注方法和事件触发
public class EventSource {
...
public void onCloseWindows(EventListener eventListener){
System.out.println("关注关闭窗口事件");
ListenerList.add(eventListener);
}
}
public static void main(String[] args) {
EventSource windows = new EventSource();
/**
* 另一种实现方式
*/
//关注关闭事件,实现回调接口
windows.onCloseWindows(new EventListener(){
}
这种就类似于,我们的窗口程序,Button监听器了 。我们还可以为单击、双击事件定制监听器 。
观察者模式
什么是观察者模式
观察者模式其实原理和监听器是一样的,使用的关键在搞清楚什么是观察者、什么是被观察者 。
观察者(Observer)相当于事件监器 。有个微博模型比较好理解,A用户关注B用户,则A是B的观察者 , B是一个被观察者,一旦B发表任何言论 , A便可以获得 。

推荐阅读