java--callback

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

    废话少说,在北京时,一位刚毕业的师兄,有一天问我:什么是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方法,一般我们都用接口来实现回调!

posted @ 2008-09-04 22:40    阅读(953)  评论(1编辑  收藏  举报