惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
月光博客
月光博客
博客园_首页
博客园 - 叶小钗
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
量子位
小众软件
小众软件
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
IT之家
IT之家
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 殇

java设计模式基础之设计原则 GEF七天之第五天 java基础--特殊的String GEF七天之第四天 GEF七天之第三天 GEF七天之第二天 GEF七天之第一天 距离矢量路由算法(最短路Bellman-Ford实现)实现 网络编程--简单实现javaftp服务器 网络编程--ftp客户端的实现(c#版) c#套接字的实现 好东西大家分享: JAVA学习的一些重点 最基础的数据结构(转自程序员杂志) java面试算法题(经典) (转)JSP上传视频后自动转成flv的核心JAVA方法 2008年1月编程语言排名(转) 利用Render方法生成静态页 (转)实现struts2的CRUD中的权限控制(二) (转)实现struts2的CRUD中的权限控制(一)
java--callback
· 2008-09-04 · via 博客园 - 殇

    早有写贴的打算,无奈,刚刚出来工作,也是初到北京!生活还不安定,根本没有办法来写,终于回学校了!

    废话少说,在北京时,一位刚毕业的师兄,有一天问我:什么是CALLBACK!,说是面试时,有好多个公司都问了这个问题!当时我一时无语,只记着,在阅读thinking in java是看到过有关他的介绍,但具体也说不清楚了,于是赶紧翻书,上网查资料。发现虽然都说的比较全面,但是都不是好理解!后来我又阅读了c++中回调函数的概念,才对他有了一个模糊的认识!

  其实我们从字面意思来判断,就已经知道他大概的意思了,我从网上摘抄的定义是:软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口(有待商榷);异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。是不是有点抽象,其实我们可以举个简单的例子:我写个程序(也可能是个类,或者是个组件)称为a,其中预留有回调函数接口,并封装好了该程序。另外一个人B要让a调用自己的程序b中的一个方法,于是,他通过我提供的接口回调自己b中的方法,目的达到。

  然后我们就可以写程序了,

Code

OK,可以看到b实现了a回调他的方法!我们再来看个具体的例子,可能要复杂一点!有这样的一个问题:

老板(Boss)让工人(Worker)干完活告诉他干的情况如何。(来自网上的例子http://lavasoft.blog.51cto.com/62575/90453

这是一个典型的回调问题,即工人要调用老板提供的接口,并且要老板调用学生的方法或属性,来了解工人的完成情况

代码如下:

Code

   我们可以看到在boss中,我们回调了工人的happendEvent方法,一般我们都用接口来实现回调!