java之回调函数-机制示例1

来源:互联网 发布:周三 知乎 编辑:程序博客网 时间:2024/05/16 06:02

看过spring、hibernate源码的朋友对callback回调模式应该并不陌生

学过 java 的朋友一定遇到过 callback 回调函数 的例子,用一句话来概括就是:“if you call me, i will call back”。

自己学习了一下,写了个小例子,还请大伙指正。


JAVA中的回调函数:

1.先预定义的协议接口:

package com.test;public interface  CallBack { public String execute();}

2.实现行为

package com.test;public  class Service {public  String doExecute(CallBack callBack) {// do something ....return callBack.execute();}}


3.测试回调函数:

package com.test;public class Client {public static void main(String[] args) {testCallBack();}public static void testCallBack(){final Service service = new Service();String result = service.doExecute(new CallBack(){public String execute() {String msg = "正在执行....";return msg;}});System.out.println(result);CallBack callBeck = new CallBackImpl();result = service.doExecute(callBeck);System.out.println(result);}}


第二种实现:

  a.步骤分解,再为  CallBack 提供一个实现类如:

package com.test;public class CallBackImpl implements CallBack{public String execute() {String msg = "实现接口工作";return msg;}}

b.测试回调函数:

package com.test;public class Client {public static void main(String[] args) {testCallBack();}public static void testCallBack(){final Service service = new Service();CallBack callBeck = new CallBackImpl();String result = service.doExecute(callBeck);System.out.println(result);}}

对以上面进行分析,不难发现关键是在  Service  类中:

public  String doExecute(CallBack callBack) {// do something ....return callBack.execute();}


其原理便是如此,这便是我们在 java 中很多地方所遇见而不解其原理和用途,如 swing,jdbc中Spring中的HibernateTemplate和JpaTemplate等。

通过上面简单的例子可以看清楚原理。



java之回调函数-机制示例2 将模拟JDBC中的回调