有一天,贾君鹏走在路上,突然感觉肚子饿了。于是他给妈妈打电话说:妈妈,饭做好了叫我。然后贾君鹏的妈妈开始做饭,等饭做好了的时候妈妈给贾君鹏回了个电话:快回来吃饭吧,然后贾君鹏就快乐的回家了。
上面就是回调机制的一个简单直白的例子。用英文来说就是:If you call me , I will call you back。
那么使用回调函数有什么好处呢?从上面的例子我们大概可以看出:如果不用回调函数,就相当于贾君鹏妈妈的手机只有接听的功能,所以贾君鹏只有不断的去打电话问他妈饭做没做好,后来只能又上演"贾君鹏,你妈喊你回家吃饭"这一幕了。贾君鹏妈妈做饭是一个耗时的过程,而贾君鹏只关心饭做没做好,做好了告诉我一声就行了。而不是做了什么菜,用了多少时间。这一点在代码中可以充分体现出回调函数的优势。(附上代码及调用顺序)
JiaJunPeng.java
public class JiaJunPeng implements Mum.Callback{
private Mum mum;
@Override
public void goHomeToEat() {
System.out.println("回来吃饭吧...");//6.贾君鹏接到了妈妈的电话,告别了小伙伴,就回家吃饭了
}
public void callMeBackToEat(){
mum = new Mum();
mum.timeToEat(this); //1,贾君鹏肚子饿了,给妈妈打电话说:饭做好了叫我啊!
}
}
Mum.java
public class Mum {
public interface Callback {
void goHomeToEat();
}
public void timeToEat(Callback callback) {// 2,贾君鹏的妈妈接到儿子的电话
makeLunch();// 3.开始做饭
allReady(); // 4.做完了一桌
callback.goHomeToEat();// 5.给儿子打电话说:儿啊,饭做好了,块回来吃吧!
}
private void makeLunch() {
System.out.println("正在做做饭...");
}
private void allReady() {
System.out.println("饭做好了...");
}
}