1.概述 回调,就是客户程序C调用服务程序S中的某个方法a,然后S又在某个时候反过来调用C中的某个方法b,对于C来说,这个b便叫做回调函数。
C不会自己调用b,C提供b的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的b叫甚名谁,所以S会约定b的接口规范(函数原型),然后由C提前通过S的一个函数r告诉S自己将要使用b函数,这个过程称为回调函数的注册,r称为注册函数。
从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。
2.异步+回调编程模式应用场景
A打电话向B请教问题,B一时解决不了,A又不能拿着电话在那里傻等,于是约定:等B想出办法后打手机通知我,这样,A就挂掉电话办其它事情去了。过了XX分钟,A的手机响了,B兴高采烈的说问题已经搞定,结果给你。其中,A的手机号码R必须在以前告诉你,R便是
注册回调函数;A的手机号码应该有效并且手机能够接收到B的呼叫,这是回调函数必须符合接口规范。
例:代码演示1.公布A的手机号
- /**
-
* A的手机号,回调函数接口.
-
* @version V1.0 ,2011-4-4
-
* @author xiahui
-
*/
-
public interface ICallbackCode {
-
public void doTelephone(String result);
-
}
2.A实现了接听手机的处理过程,并且A可以向B发消息
- /**
-
* A有一个电话号码ICallbackCode,别人可以打电话,A来处理.
-
* @version V1.0 ,2011-4-4
-
* @author xiahui
-
*/
-
public class A implements ICallbackCode{
-
-
//别人打来电话,则处理
-
public void doTelephone(String result) {
-
System.out.println(result);
-
-
}
-
-
//向B发送一个请求
-
public void callB(){
-
B b=new B();
-
b.doSth(this);//调用B,并要求B将结果返回给我
-
}
-
-
public static void main(String[] args){
-
A a = new A();
-
a.callB();//向B发送一个请求
-
}
-
}
3.B向外声明可以做doSth,处理完后将结果返回给调用者
- /**
-
* B向外声明可以做doSth,处理完后将结果返回给调用者.
-
* @version V1.0 ,2011-4-4
-
* @author xiahui
-
*/
-
public class B {
-
-
//调用者的电话号码
-
private ICallbackCode callback;
-
-
public void doSth(ICallbackCode iCallback) {
-
callback = iCallback;
-
-
//处理,并得到结果result
-
String result="这是结果";
-
-
//拨打调用者的电话
-
callback.doTelephone(result);
-
}
-
}
本人对网上的例子进行了修改,网上的例子明显理论和实现对不上,基本都是一支半解的,无语。
参考文献1.java回调函数. http://ayzw001.blog.163.com/blog/static/1134114222009420112538726/
2.JAVA中的回调函数介绍.
阅读(1094) | 评论(0) | 转发(0) |