经典例子让你彻底理解Java回调机制
通过上图我们可以看到回到属于一种双向的调用方式。回调的基本上思路是:A调用B,B处理完之后再调用A提供的回调方法(通常为callbakc())通知结果。 通常回调分为:同步回调和异步回调。网络上大多数的回调案例都是同步回调。 其中同步回调与同步调用类似,代码运行到某一个位置的时候,如果遇到了需要回调的代码,会在这里等待,等待回调结果返回后再继续执行。 而异步回调与异步调用类似,代码执行到需要回调的代码的时候,并不会停下来,而是继续执行,当然可能过一会回调的结果会返回回来。 同步回调实例 下面我们以同步回调为例来讲解回调的Java代码实现。整个过程就模拟上面问答问题的场景。 首先,定义给一个CallBack的接口,将回调的功能进行单独抽离:于Person要提供回调方法,因此实现CallBack接口及其方法,方法中主要针对回调结果进行处理。 同时,由于Person要调用Genius对应的方法,因此要持有Genius的引用,这里通过构造方法传入。 定义回答问题的大神Genius类:面的过程,就实现了一个同步回调的功能。当然,从程序设计上来说,可以对Person和Genius进一步抽象化处理,通过接口的形式呈现。 在上述回调机制的代码实现中,最核心的是在调用answer方法时传递了this参数,即调用者自身。 从本质上来说,回调是一种思想,是一种机制,至于具体如何实现,如何通过代码将回调实现得优雅、实现得可扩展性比较高,就需要八仙过海各显神通了。 异步回调实例
上面的实例演示了同步回调,很明显在调用的过受到Genius执行时长的影响,需要等到Genius处理完才能继续执行Person方法中的后续代码。 (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |