编程思想基本概念之回调(Callback)

本文通过Java语言示例,详细解析了软件开发中回调机制的工作原理及其应用。介绍了如何定义回调接口和实现回调方法,展示了调用方与被调用方之间的交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在软件模块调用中,主要有三种机制:同步调用,异步调用和回调。

同步调用是调用方(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)。


、电脑版的安装:本软件是绿色版,无需安装,解压后将文件夹复制到电脑上任意位置都可以,注意帮助文件要和主程序在一个文件夹内。 2、掌上版的安装:掌上版是绿色版,无需安装,先运行“工程测量系统”电脑版编辑好线路参数,然后将文件夹内的 “轻松工程测量系统掌上版”和“参数文件”夹复制到PPC上任何位置均可,参数也可以在PPC上更改和建立。推荐在电脑上输入后复制到PPC。 注意“参数文件”这个文件夹必须和“轻松工程测量系统掌上版”在同目录内。 3、手机版的安装:有2种方法:1种是先用电脑版将参数转换后再复制到Easy.jar文件中,然后将Easy.jar文件复制到手机后点击安装。读取电脑版参数一定要将参数文件放入Easy.jar文件后普通手机版才能正常运行,参数转换方法见帮助文件。另一种是安装在手机上在手机上输入参数。推荐第1种在电脑上输入然后转换,这样就算重装参数也不会丢失,而且电脑上输入参数更快。 4、手机版的参数转换及复制: 如图,点击“转换”按钮就可以将电脑版参数转换为手机版参数,转换完后会在程序目录下生成一个“SJCS”的文件夹。 如何将“SJCS”文件夹复制到Easy.jar文件: 首先电脑上必须安装有Winrar压缩软件,然后双击Easy.jar文件打开如下图: 注意:如果双击打不开文件则,在Easy.jar文件上点击右键,选择“打开方式”,然后用Winrar打开。如下图 然后在将“SJCS”文件夹拖入打开的Easy.jar文件就可以了。 注意:如果不会拖入,也可以选择“SJCS”文件夹后按“Ctrl+C”复制,然后在打开Easy.jar上按“Ctrl+V”粘贴即可。
V2.031 2010.4.23 1、修正没有安装ET工具时的错误提示! V2.030 2010.04.22 1、修复坐标标注自定义坐标系时标注比例变量不能保存的BUG V2.029 2010.04.19 1、修复卸载时不能删除菜单目录的BUG V2.028 2010.4.9 1、修改坐标标注中参考基点在自定义坐标后,标注当前及世界坐标系中显示错误的BUG 2、修改坐标标注中若CAD中UCS为自定义时且与WCS有角度时,标注方向不正确的BUG V2.027 2010.4.5 1、修改承台绘制-承台库中常规列数据输入方式 2、修改承台标注中无轴线时无法标注插入点的BUG 3、承台绘制中添加原有承台标注承台编号功能。 4、一些其他BUG v2.026 2010.04.02 1、修改承台绘制中轴线选择为循环。 V2.024 2010.04.01 1、修改打开CAD首运行授权,无法运行的BUG V2.023 1、修改坐标标注设置对话框中颜色选择取消时出错BUG 2、坐标标注中初始编号H=改为 V2.021 2010.3.15 1、承台标注添加只标轴线与承台插入点功能 2、承台标注添加自定义偏移量功能 2010.03.14 1、承台标注功能添加对齐、轴线功能 V 2.010 2010.03.12 1、承台绘制中,第一次添加承台,则自动删除测试承台 2、添加承台标注功能 V 2.000 2010.03.03 1、修改批量标注桩位编号中排序出错的BUG 2、修改扩展程序中不能定义DVB程序的BUG 3、承台绘制添加编号功能 4、承台绘制添加转角及偏移量动态拾取功能 2010.01.28 1、更新坐标标注,能自定义字符 2009.10.31 1、桩位绘制使用即时交互功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值