所谓回
调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下
的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓
甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函
数。Web Service以及Java
的RMI都用到回调机制,可以访问远程服务器程序。
而在spring当中大量使用了回调机制,我们不得不对内部的实现机制进行一定的了解与认识,我们先从简单点入手。
在现实生活当中常常会发生对一个男孩子来说,会存在着不同的女朋友,那么怎么样去更换他呢,基本可以通过回调来实现。
1 回调类接口
package com.japie.callback;
/**
*
* @author Japie
*
*/
public interface IFindGirlFirendBack {
public String findGirlFirendForBoyMan();
}
2 具体实现类
package com.japie.callback;
/**
*
* @author Japie
*
*/
public class FindGirlFriendCallbackFunction implements IFindGirlFirendBack {
/**
*
*/
public FindGirlFriendCallbackFunction() {
}
public String findGirlFirendForBoyMan() {
return "李四!";
}
}
3 调用者
package com.japie.callback;
/**
*
* @author Japie
*
*/
public class AnotherBoyman {
IFindGirlFirendBack findGrilFirendBack;
public String doGirlFriendCallback() {
return findGrilFirendBack.findGirlFirendForBoyMan();
}
public void setCallback(IFindGirlFirendBack findGrilFirendBack) {
this.findGrilFirendBack = findGrilFirendBack;
}
}
4 具体实现回调测试
package com.japie.callback;
public class CallMainTest {
public CallMainTest() {
}
public static void main(String[] args) {
IFindGirlFirendBack first = new FindGirlFriendCallbackFunction();
System.out.println("原先的女朋友:" + first.findGirlFirendForBoyMan());
AnotherBoyman anotherBoyman = new AnotherBoyman();
anotherBoyman.setCallback(new FindGirlFriendCallbackFunction() {
@Override
public String findGirlFirendForBoyMan() {
return "张三";
}
});
String girls = anotherBoyman.doGirlFriendCallback();
System.out.println("此男孩的女朋友:" + girls);
}
}
5 运行结果如下
原先的女朋友:李四!
此男孩的女朋友:张三
分享到:
相关推荐
springboot + +oss + thymeleaf 实现的小demo , oss文件上传,根据oss链接生成二维码.
除了大量使用Template Method来封装一些底层的操作细节,spring也大量使用callback方式类回调相关类别的方法以提供JDBC相关类别的功能,使传统的JDBC的使用者也能清楚了解spring所提供的相关封装类别方法的使用。
渲染(imgOptions,chartOptions,回调) imgOptions对象。 渲染图像选项。 chartOptions对象。 常规 Highcharts 选项。 callback函数。 回调有参数(base64png) ,一个 base64 PNG 数据字符串。 示例用法 var ...
Array的配置项目没有上面介绍的那么直观,默认情况下DWR装载所有的基本类型和可装载的对象,这些包括String,Date等先前介绍的类型.java高级程序员可能会理解为什么match的这行有点奇怪. [Z"/> [B"/> [S"/> [I"/> [J"/>...
左边按钮的可配置化(可配置多按钮,文字/图片,背景色,宽度,回调) pressable in single row 单个row内的按钮或链接可点击 optional animation type, timing/spring 可选择滚动动画类型,timing/spring Ins
在您的 Spring '15 组织中使用回调 URL https://your-app.herokuapp.com/oauth/_callback和api范围创建一个连接的应用程序。 等待 2-10 分钟,让连接的应用程序数据在 Salesforce 周围复制。 将演示代码部署到 ...
callback:发送成功时回调函数。 type:返回内容格式,xml, html, script, json, text, _default。 套用格式: $.post(test.php, function(data){ alert(Data Loaded: + data); }); $.get(co
DWR中的JavaScript简介 44 5.1 简单的回调函数 44 5.2 调用元数据对象 45 5.3 查找回调函数 45 5.4 创造一个与Java对象匹配的Javascript对象 46 <br/>第6章. engine.js 功能 47 6.1 使用...
[阿里云OSS](project-bootstrap/aliyun-oss-post-callback.png) > zheng-api 服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该...
FreeformGestureDetector:...回调实现FreeformGestureDetector.OnGestureListener。 FreeformGestureDetector freeformGestureDetector = new FreeformGestureDetector(getContext(),callback); 连View的触感
Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几点新功能 ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用小记 2.0问题、错误解决办法 ASP.NET 2.0...