接口与回调

来源:互联网 发布:剑三萝莉捏脸数据最新 编辑:程序博客网 时间:2024/06/14 08:23

        回调是一种常见的程序设计模式,利用回调技术可以处理这样的问题,事件A发生时要执行处理事件A的代码,判断何时发生事件A及何时执行处理的代码。这些代码是固定,先行编写完毕,供使用。当事件A的处理代码开放给其他开发人员编写,可以有很多不同的实现,使用时可以注册具体需要的实现来处理。

       Java中Swing 与 AWT的事件监听处理模型就是使用接口与回调实现的。下面举一个简单的例子来说明这个问题。

//回调示例//MyListener为事件处理接口,其中有specialProcessEvent方法,表示处理事件的方法public interface MyListener{void specialProcessEvent();}public class MyMoniter{MyListener mylistener;//注册监听器方法public void regListener(MyListener ml){this.mylistener = ml;}//事件处理方法public void generalProcessEvent(){this.mylistener.specialProcessEvent();}}//方式A实现MyListener接口public class WayA implements MyListener{public void specialProcessEvent(){System.out.println("我采用A方式处理事件!!!");}}//方式B实现MyListener接口public class WayB implements MyListener{public void specialProcessEvent(){System.out.println("我采用B方式处理事件!!!");}}public class Sample5_3{public static void main(String[] args){//创建对象MyMoniter mm = new MyMoniter();WayA wa = new WayA();WayB wb = new WayB();//注册A处理器mm.regListener(wa);//发送事件处理请求mm.generalProcessEvent();//注册B处理器mm.regListener(wb);//发送事件处理请求mm.generalProcessEvent();}}


         上面的例子中,MyMoniter 是一个监控者,当有事件发生时,通知监控类(调用其generalProcessEvent方法)处理事件,而generalProcessEvent方法调用注册到监控器的处理器中 specialProcessEvent 方法来对具体事件处理。

       MyMoniter中regListener方法允许把不同的处理器注册给监控者。WayA与WayB是实现了事件处理接口的两个具体的处理器,分别对事件采用不同的处理方法。

       有结果可以看出,由于两次事件处理前注册了不同的处理器实现,故两次事件处理执行具体任务不同。而且如果有需要,可以实现更多不同的处理方式,提供了很高的灵活性。

0 0
原创粉丝点击