回调函数的理解

2016-08-22  本文已影响23人  写程序就好

对使用回调函数目的理解

让一个已经写好的程序A调用我们自己写的程序B的某个方法。比如,A是一个封装好的加减法计算器程序,可以独立运行。B是我们创建的一个乘除法计算器。回调,就是想让A在可以完成加减法的同时,遇到乘除法可以直接调用B的方法。


相当于A在设计试就预留了可以灵活扩展和使用的功能接口。

回调的理解:

B必须先去调用A的某个方法,A这个方法重新返回来调用B中的方法。这就是回调。

为了实现回调过程,在Java中,必须通过接口。

让A类能够调用某个接口(实际被称为回调接口)中的抽象方法,且具有这个首先接口的引用。让B类实现这个接口的方法。(或者在调用A的方法参数中使用匿名内部类的方式。)

这样,在外部实现过程中,B类先自己调用A类中的某个方法function1,并将自己(回调接口的实现类)作为方法的参数传递给A。之后,A类的function1方法中,会调用这个回调接口中的抽像方法(也就是B类实现的方法),实现回调B类中的某个方法。


举例

假设我是程序员A,以下是我的程序a:

public class Caller{

private MyCallInterface mcl;//A类具有B类(抽象接口的引用)

public Caller(){}

public setCallfuc(MyCallInterface mc){

this.mc=mc;

}

//A类回调B类的方法

public call(){

my.fuc();

}

}

我还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。

/**

* 回调接口

*/

public interface MyCallInterface{

public void fuc();

}

于是,程序员B只需要实现这个接口就能达到回调的目的了:

public class B implements MyCallInterface{

public void fuc(){

//do something

}

public static void main(String args[]){

Caller call=new Caller();

call.setCallfuc(this);//B类将自己传递给A类

call.call();//在B类中调用了A类的某个方法

}

}

上一篇 下一篇

猜你喜欢

热点阅读