java--回调方法

     在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。

下面先写一个小例子来了解回调。

1 类图:


Boss类实现接口MyCallInterface,Worker中的setCallBack方法注册回调对象。


2 创建一个回调接口,让老板告知干完活如何找到他的方式:留下老板办公室地址:

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.callback;
/** 
* 此接口为联系的方式,不论是电话号码还是联系地址,作为 
* 老板都必须要实现此接口 
* @author yingjie
* 
*/
public interface MyCallInterface {
	 public void  printName(); 

}</span>


3 创建回调对象,就是老板本身,为了让员工工作完成之后告诉老板

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.callback;
/** 
 * 老板是作为上层应用身份出现的,下层应用(员工)是不知道 
 * 有哪些方法,因此他想被下层应用(员工)调用必须实现此接口 
 * @author yingjie
 * 
 */    
public class Boss implements MyCallInterface{

	@Override
	public void printName() {
		System.out.println("This is the Boss printName method");  		
	}
}
</span>


4 创建控制类,也就是员工对象,他必须持有老板的地址(回调接口)

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.callback;

public class Worker {
	private MyCallInterface callInterface;      
    public Worker() {   
    }  
    //告诉老板的联系方式,也就是注册 
    public void setCallBack(MyCallInterface callInterface) {  
        this.callInterface = callInterface;  
    }  
      
    public void callBoss() {  
        callInterface.printName();  
    }  
}</span>


5 客户端调用

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.callback;

public class Client {  
    public static void main(String[] args) {  
        Worker worker = new Worker();  
        worker.setCallBack(new Boss()); 
        worker.callBoss();  //告诉老板干完了
    }  
} </span>

6 为什么使用回调方法?

    正常情况下开发人员使用已经定义好的API,这个过程叫调用。但是有时这样不能满足需求,就需要程序员注册自己的程序,然后让事先定义好多API在合适的时候调用注册的方法,这叫回调。

    回调用于层间协作,上层将本层函数安装在下层,这个函数就是回调,而下层在一定条件下触发回调,例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。 
    其实回调和API非常接近,他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用,一般这个函数对高层都是已知的;而回调正好相反,他是高层提供给底层的调用,对于低层他是未知的,必须由高层进行安装,这个安装函数其实就是一个低层提供的API,安装后低层不知道这个回调的名字,但它通过一个函数指针来保存这个回调,在需要调用时,只需引用这个函数指针和相关的参数指针。


7 总结

     java中的回调就是获得另一个对象的引用,然后调用对象中的方法。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值