`
totty
  • 浏览: 23337 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于回调函数

阅读更多

看Spring源码中在sql操作处用回调函数觉得大为精妙,自己也写了一个demo,记录下来,以便以后可以参考。

TestCallBack.java 代码
  1. package per;   
  2.   
  3. public interface TestCallBack {   
  4.     Object doSomeThing(TestExecute executor) ;   
  5. }  

 

TestExecute.java 代码
  1. package per;   
  2.   
  3. public class TestExecute {   
  4.     public Object doExecute1() {   
  5.         System.out.println("in TestExecute doExecute1()");   
  6.         System.out.println("    can do sql operation1");   
  7.         return "";   
  8.     }   
  9.   
  10.     public Object doExecute2() {   
  11.         System.out.println("in TestExecute doExecute2()");   
  12.         System.out.println("    can do sql operation2");   
  13.         return "";   
  14.     }   
  15.   
  16. }  

 

TestTemplate.java 代码
  1. package per;   
  2.   
  3. public class TestTemplate {   
  4.   
  5.     public Object execute(TestCallBack action) {   
  6.         try {   
  7.             System.out.println("in TestTemplate execute()");   
  8.             System.out.println("    can create sql connection");   
  9.             TestExecute executor = new TestExecute();   
  10.             action.doSomeThing(executor);   
  11.             return "";   
  12.         } finally {   
  13.             System.out.println("in TestTemplate finally");   
  14.             System.out.println("    can close sql connection");   
  15.         }   
  16.     }   
  17.   
  18.     public Object doThing1() {   
  19.         System.out.println("in TestTemplate doThing1()");   
  20.         Object ob = execute(new TestCallBack() {   
  21.             public Object doSomeThing(TestExecute executor) {   
  22.                 System.out.println("in TestTemplate doThing()'s callback method");   
  23.                 executor.doExecute1();   
  24.                 return "";   
  25.             }   
  26.         });   
  27.         return ob;   
  28.     }   
  29.   
  30.     public Object doThing2() {   
  31.         System.out.println("in TestTemplate doThing2()");   
  32.         Object ob = execute(new TestCallBack() {   
  33.             public Object doSomeThing(TestExecute executor) {   
  34.                 System.out.println("in TestTemplate doThing()'s callback method");   
  35.                 executor.doExecute2();   
  36.                 return "";   
  37.             }   
  38.         });   
  39.         return ob;   
  40.     }   
  41. }   

 

TestRun.java 代码
  1. package per;   
  2.   
  3. public class TestRun {   
  4.   
  5.     public static void main(String[] args) {   
  6.         new TestTemplate().doThing1();   
  7.         new TestTemplate().doThing2();   
  8.     }   
  9.   
  10. }   

输出结果为:

  1. in TestTemplate doThing1()   
  2. in TestTemplate execute()   
  3.     can create sql connection   
  4. in TestTemplate doThing()'s callback method   
  5. in TestExecute doExecute1()   
  6.     can do sql operation1   
  7. in TestTemplate finally  
  8.     can close sql connection   
  9. in TestTemplate doThing2()   
  10. in TestTemplate execute()   
  11.     can create sql connection   
  12. in TestTemplate doThing()'s callback method   
  13. in TestExecute doExecute2()   
  14.     can do sql operation2   
  15. in TestTemplate finally  
  16.     can close sql connection  

 

用回调函数,我们可以把创建数据库连接和数据库关闭操作单独出去,而不用在每一次数据库操作时都要先建立连接,再进行数据库操作,操作完后还要关闭连接,而且数据库操作还得放在try catch finally当中。

Excellent, Rod Johnson !

分享到:
评论
3 楼 cjc19762338 2008-09-26  
嗯嗯,我就是看了spring源码,里面有回调函数,真惭愧,既然看不明,唉,出来工作都年多啦
2 楼 leeking 2007-11-02  
弄几个对象传来传去的,整的直晕.
1 楼 flyromza 2007-08-31  
恩,匹配OOD的两个原则:封装 & 信息隐藏

相关推荐

    完整版模块_回调函数.rar

    这个"完整版模块_回调函数.rar"压缩包文件很可能包含了一整套关于回调函数的教程、示例代码或者实战项目,旨在帮助学习者深入理解和掌握回调函数的使用。 回调函数,简单来说,就是一个被作为参数传递给另一个函数...

    回调函数机制

    关于回调函数的具体实现,我们在文档中看到了一个查找链表中特定值的函数Search_List的例子。在这个例子中,Search_List函数通过一个比较函数指针compare作为参数,允许用户自定义如何比较链表中节点的值。这样,...

    串口屏LUA例程-常用的回调函数使用说明V1.0.pdf

    本文档主要介绍了在大彩物联型串口屏上使用LUA脚本进行编程时,涉及的一些核心概念是关于回调函数的使用方法以及编程注意事项。大彩LUA脚本API中提供了一系列的回调函数,这些函数在特定事件发生时被自动调用,可以...

    DLL 回调函数 + Demo示例程序,VS2017 x64

    本资源"DLL 回调函数 + Demo示例程序,VS2017 x64"提供了在Visual Studio 2017 64位环境下关于DLL回调函数的实例,确保在Debug和Release模式下都能正常运行。 首先,我们需要理解DLL是什么。DLL是动态链接库,它是...

    关于delphi 7的DLL使用回调函数

    本文将深入探讨如何在DLL中使用回调函数,以及如何通过回调函数实现主程序与DLL之间的通信,特别是在这个例子中,DLL窗口如何反写主程序的信息。 首先,了解回调函数的基本概念。回调函数是一种将函数指针作为参数...

    Qt使用回调函数方(callback)

    可能包含了具体的信号槽连接示例,而`mainwindow.ui`则是Qt Designer生成的用户界面文件,`callback.pro`和`callback.pro.user`则是项目配置文件,它们共同构成了一个关于Qt回调函数使用的实例项目。

    嵌入式程序设计回调函数模型

    在"CallBackFun2015-12-31"这个文件中,很可能包含了关于如何在实际项目中实现回调函数模型的示例代码、教程或者案例研究,帮助开发者更好地理解和应用这种编程模式。深入研究这些资料,可以进一步提升在嵌入式程序...

    linuxC语言函数指针回调函数教程

    通过阅读《C回调函数+.doc》和《轻松了解C语言回调函数.doc》,你可以获取更多关于函数指针和回调函数的详细解释,包括它们的工作原理、最佳实践以及可能遇到的问题。这些文档应该会涵盖如何定义和使用函数指针,...

    js回调函数示例

    在给定的文件`aa.html`中,可能包含一个关于JavaScript回调函数的实际示例,比如一个按钮点击事件的处理程序,或者一个使用`setTimeout`的计时器。通过查看和分析这个文件,你可以进一步了解回调函数在实际项目中的...

    delphi 回调函数示例

    在 Delphi 编程中,回调函数是一种设计模式,它允许你将函数或方法作为参数传递给另一个函数,以便在特定时刻被...以上就是关于 Delphi 回调函数的简要介绍和应用示例,希望对你在 Delphi 编程中使用回调函数有所帮助。

    VC++ 回调函数和线程的程序例子

    在VC++编程中,回调函数和线程是两个非常重要的概念,它们在多任务...以上就是关于VC++中回调函数和线程的基本介绍和示例。理解并熟练掌握这些概念和技术,将有助于你在开发高效、多任务的C++应用程序时更加得心应手。

    c语言指针回调函数最全demo实例(简单明了一看就会)

    在C语言中,指针和回调函数是两个非常重要的概念,它们在编程中扮演着核心角色,尤其是在处理复杂数据...在提供的`CppApplication_1`文件中,可能包含了更多关于C语言指针回调函数的示例代码,供读者进一步学习和实践。

    Delphi中制作DLL中回调函数的应用

    七、关于回调Funciton 你可以把Callback函数看作是一种特殊的消息响应函数,一般来说我们不会自己调用这种函数, 而是有某些系统函数调用,而且不需要向后传递消息。 只要象C/C++这样支持函数指针的语言都 有回调...

    javascript 回调函数详解

    首先,关于回调函数的定义,它是指当一个函数作为参数传递到另一个函数里,并在那个函数内被调用。这里的重点是函数被调用的时机和方式是由外部函数来控制,而不是由函数自身直接调用。因此,即便回调函数在同步代码...

    回调函数DEMO.rar

    在这个"回调函数DEMO.rar"中,我们可以期待看到一系列关于如何在DELPHI中实现和使用回调函数的例子。可能包括以下知识点: 1. **函数指针**:在DELPHI中,函数指针是一种类型,它能够存储函数的地址,从而使我们...

    test回调函数_窗体间传值

    总结来说,"test回调函数_窗体间传值"是一个关于在多窗体应用程序中使用回调函数进行数据传输的示例。通过定义委托、创建事件以及在窗体之间订阅和触发事件,我们可以实现在不同时刻和不同对象之间有效地共享和更新...

    javascript回调函数详解参考.docx

    以下是一些关于JavaScript回调函数的关键点: 1. **回调函数定义**:回调函数是一个作为参数传递给其他函数的函数,这个参数通常是一个函数引用。当外部函数执行完毕或满足特定条件时,它会调用这个传递进来的函数...

    回调函数的介绍

    回调函数是编程中的一种常见设计模式,特别是在处理异步操作时。回调函数允许我们将一个函数作为参数传递给另一个函数,以便在某个特定条件满足或异步操作完成后由被调用的函数执行。这种方式使得我们能够编写更加...

    RecallBackDemo(回调函数实现简单计时器)

    回调函数在编程中是一种设计模式,它允许我们将一个函数作为参数传递给另一个函数,以便在特定事件发生或操作完成后调用。回调函数的概念是异步编程的基础,尤其是在那些需要等待某些操作完成(如网络请求、定时任务...

Global site tag (gtag.js) - Google Analytics