Java中对于回调函数的简单理解

来源:互联网 发布:通达oa mysql 密码 编辑:程序博客网 时间:2024/06/01 10:57

有一天,贾君鹏走在路上,突然感觉肚子饿了。于是他给妈妈打电话说:妈妈,饭做好了叫我。然后贾君鹏的妈妈开始做饭,等饭做好了的时候妈妈给贾君鹏回了个电话:快回来吃饭吧,然后贾君鹏就快乐的回家了。

上面就是回调机制的一个简单直白的例子。用英文来说就是:If you call me , I will call you back。

那么使用回调函数有什么好处呢?从上面的例子我们大概可以看出:如果不用回调函数,就相当于贾君鹏妈妈的手机只有接听的功能,所以贾君鹏只有不断的去打电话问他妈饭做没做好,后来只能又上演"贾君鹏,你妈喊你回家吃饭"这一幕了。贾君鹏妈妈做饭是一个耗时的过程,而贾君鹏只关心饭做没做好,做好了告诉我一声就行了。而不是做了什么菜,用了多少时间。这一点在代码中可以充分体现出回调函数的优势。(附上代码及调用顺序)

JiaJunPeng.java

public class JiaJunPeng implements Mum.Callback{private Mum mum;@Overridepublic 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("饭做好了...");}}


原创粉丝点击