笔记之回调函数与监听器模式

一、回调函数
回调函数是是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。有这么一句通俗的定义:就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己程序b中的一个方法,于是,他通过a中的接口调用自己b中的方法
举个例子:
这里有两个实体:回调抽象接口、回调者(即程序a)
回调接口(ICallBack)
public interface ICallBack {
public void callBack();
}
回调者(用于调用回调函数的类)
public class Caller{
public void call(ICallBack callBack) {
System.out.println("start...");
callBack.callBack();
System.out.println("end...");
}
}
回调测试:
public static void main(String[] args) {
        Caller call = new Caller();
        call.call(new ICallBack(){


        @Override
        public void callBack() {
            System.out.println("终于回调成功了!");
       
        });


}
控制台输出:
start...


终于回调成功了!


end...
二、事件监听模式
Java的事件监听机制可概括为3点:
1.Java的事件监听机制涉及到事件源,事件监听器,事件对象三个组件,监听器一般是接口,用来约定调用方式。
2.当事件源对象上发生操作时,它将会调用事件监听器的一个方法,并在调用该方法时传递事件对象过去。
3.事件监听器实现类,通常是由开发人员编写,开发人员通过事件对象拿到事件源,从而对事件源上的操作进行处理。
监听器接口
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 Vector<EventListener> ListenerList = new Vector<EventListener>();
    //注册监听器
    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);
        }
    }


}
此处理解: 自定义监听器实现类 实现java.util.listener接口 并提供其接口方法handleEvent(EventObject event)的实现 基本为对event对象的处理
   自定义事件类 实现java.util.EventObject接口 事件对象的创建 需要事件源 同时包括事件具体行为
   事件源 为具体业务类 中需要定义监听器列表 定义监听器的添加以及删除方法 以及监听器的通知方法
zop监听器理解: 定义监听器接口zoplistener 继承 java.util.listener接口(此处具有特征性 不具任何意义),定义 两监听器 LoggerListener和MassageListener 并实现handlerEvent(ZopEvent event)方法
(ZopEvent是在EventObject类的基础上进行扩展 对属性进行扩展 除了Object source外还有事件类型String eventType (包括登录、查询。。。)以及传输对象Object data)
此处是对用户对系统的操作进行监听 并生成 操作日志。同时 定义监听器支持类 ZopListenerSupport 其中提供 监听器列表 定义监听器添加的方法 以及触发事件即通知方法(其实是对每个
监听器 对事件处理的一个 调用 实则 是监听器列表遍历 并调用每个监听器的 handleEvent()),此处 同时定义了一个监听器配置类 通过 configuration以及bean注解
将监听器支持类ZoplistenerSupport的创建 交给bean容器去做并进行管理 (此处的支持类的创建同时 是对其 监听器列表的一个 初始化)。

猜你喜欢

转载自blog.csdn.net/u011445756/article/details/80174602
今日推荐