在软件模块调用中,主要有三种机制:同步调用,异步调用和回调。
同步调用是调用方(A)call被调用方(B)的接口,并等待B处理完给出一个回执后A才继续执行,这期间是“阻塞”的。
异步调用是调用方(A)call被调用方(B)的接口后,不等待B执行完,且B在被调用后会直接回执A。
回调是调用方(A)call被调用方(B)时,B也回调(callback)被调用方,双方互调接口,只不过call动作是由A发起的。
同步调用是最简单的,异步调用一般是在回调的基础上实现的。所以了解“回调”的机制是至关重要的。各位朋友请看下面的代码。
(注:以下示例用Java语言实现,在C,C++或Pascal等语言中也有相应的方式实现。)
package callbackexample;
public interface ICallBack
{
//需要回调的方法
public void postExec();
}
上面就是一个接口类(抽象类,abstract class),他需要在调用方处被实现为一个匿名类。其中的postExec就是回调方法。
package callbackexample;
package callbackexample;
public class FooBar
{
//组合聚合原则
private ICallBack callBack;
public void setCallBack(ICallBack callBack)
{
this.callBack = callBack;
doSth();
}
public void doSth()
{
callBack.postExec();
}
}
上面是一个被调用的类,其中的setCallBack方法是被调用的方法。
package callbackexample;
//第二个类在测试类里面,是一个匿名类:
package callbackexample;
public class Test
{
public static void main(String[] args)
{
FooBar foo = new FooBar();
foo.setCallBack(new ICallBack(){
public void postExec()
{
System.out.println("在Test类中实现但不能被Test的对象引用,而由FooBar对象调用");
}
});
}
}
上面的Test就是一个用于测试的调用者类,它通过main方法中实例化一个FooBar,并用实现的ICallBack的匿名类作为参数传递给FooBar的被调用方法setCallBack,而在这个虚拟方法中,FooBar调用了匿名类的匿名类的postExec方法的动作,这个动作就是回调(Callback)。
分享到:
相关推荐
通过简单的自定义Dialog来理解接口回调callback机制
本文实例分析了C++中回调函数(CallBack)的用法。分享给大家供大家参考。具体分析如下: 如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。 其错误是普通的C++成员函数都隐含了一个传递...
Qt使用回调函数方(callback)
关于回调函数的基本概念和使用技巧. 个人觉得不错. 当然了. 网上可以搜到更好的,
Delphi MIDAS 回调 (CallBack) Delphi MIDAS 回调 (CallBack)
C++中回调(CallBack)的使用思路C++中回调(CallBack)的使用思路C++中回调(CallBack)的使用思路
【ASP.NET编程知识】Asp.net回调技术Callback学习笔记.docx
halcon外触发get_framegrabber_callback注册回调函数方法,c#代码
CallBack回调函数
回调函数Callback_Function
对okhttputils回调封装
ASP.NET2.0实现无刷新客户端回调的Callback机制
这个资源解决了我很长时间不理解回调是什么,怎么用。
JNI callback Android
回调技术(CallBack), 详细阐述请参见:http://blog.csdn.net/kissqi/archive/2009/03/13/3988052.aspx
手把手教你写回调函数源代码,详细的讲述了回调函数的编写过程以及linux库文件的制作
callback回调函数,很多人不太理解,可以参考一下
NULL 博文链接:https://onestopweb.iteye.com/blog/2337794
通过JNI接口静态注册的native方法去创建线程,同时提供native回调Java的方法。通过这个框架可以去实现线程监听某一个状态,然后回调Java的方法(如发消息去通知顶层,实现显示)
复用和扩展是模板模式的两大作用,实际上,还有另外一个技术概念,也能起到跟模板模式相同的作用,那就是回调(Callback)。A 类事先注册某个函数 F 到 B类