前几天在论坛看到谈论Spring中的Callback模式和Template模式,我以前也提到过Spring中JdbcTemplate中使用的Callback , 自己回来想了想,总结一下自己的想法。
Spring中的Callback模式与Template模式合用,随处可见。Template method被广泛的使用,像Servlet就是使用这个模式。Template mothod模式虽然能简化很多重复的代码,但这种模式的也有不少限制。Template mothod将一个功能的实现分成许多小的步骤,在父类中定义了这些步骤的顺序,让子类来具体实现每一个小的步骤。这些小的步骤是protected,以防止用户不正确的使用这些小的步骤而产生异常。这样就产生了一个限制,那就是你需要继承Template然后重新实现具体的小步骤。如果这个Template有许多方法,就像JdbcTemplate,如果你每次继承这个庞大的类,然后只是重写某个小步骤中来订制你自己的功能,就会显得非常笨重,更何况数据库操作使用的如此频繁,难道你每进行一个操作就通过继承订制一个,显然不可能这么做。
Spring使用Callback模式与之配合,达到了去掉重复代码的效果,同时增加了很大的灵活性,你只需要实现某些CallBack就可轻松订制出Template。
那么什么时候才是Callback模式与Template模式结合的最佳时机呢。显然如果每个具体的步骤都需要真正去具体实现而不是简单的改变参数或设置某个对象就ok的话,使用Callback很难去订制,因为你可能需要传递多个Callback作为参数,并让用户去实现,是用Java的内部类本来就是一个比较丑陋的语法,更何况参数是多个。这相当于你把每个小步骤封装成为接口,然后分别继承之然后实现。显然没有达到方便灵活的效果,这时候直接使用Template method模式就比结合Callback要好。而如果用户只需要定制一个方法能就达到用户的要求,或者更简单,只是设置不同的参数,那么使用Callback就具有很好的灵活性。
分享到:
相关推荐
Spring 数据库访问的支持。包括统一异常体系和Spring的Template+CallBack的解读
复用和扩展是模板模式的两大作用,实际上,还有另外一个技术概念,也能起到跟模板模式相同的作用,那就是回调(Callback)。A 类事先注册某个函数 F 到 B类
spring、ioc、aop、callback,自己写着玩,感觉挺不错的,也能加深对框架等理解
本文实例分析了C++中回调函数(CallBack)的用法。分享给大家供大家参考。具体分析如下: 如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。 其错误是普通的C++成员函数都隐含了一个传递...
除了大量使用Template Method来封装一些底层的操作细节,spring也大量使用callback方式类回调相关类别的方法以提供JDBC相关类别的功能,使传统的JDBC的使用者也能清楚了解spring所提供的相关封装类别方法的使用。
>回 调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口; >异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方...
C++中回调(CallBack)的使用思路C++中回调(CallBack)的使用思路C++中回调(CallBack)的使用思路
android中的Handler和Callback机制.pdf
用ASP.NET Callback 和JavaScript 高速访问数据库用ASP.NET Callback 和JavaScript 高速访问数据库用ASP.NET Callback 和JavaScript 高速访问数据库
对okhttputils回调封装
简单易懂,快速了解WCF如何CallBack
这是一个及其简单的但是又实用的callBack
该库旨在将的易用性与 Spring 和 Spring Integration 框架的强大功能结合起来。 显着的特点包括: 使用方法注释的声明性订阅者注册 异步事件使用可配置的 交易订阅者支持 基于每个订阅者的同步或异步行为 使用时...
callback
xe datasnap CallBack
回调技术(CallBack), 详细阐述请参见:http://blog.csdn.net/kissqi/archive/2009/03/13/3988052.aspx
易语言Callback数据类型转易语言子程序源码.rar 易语言Callback数据类型转易语言子程序源码.rar 易语言Callback数据类型转易语言子程序源码.rar 易语言Callback数据类型转易语言子程序源码.rar 易语言Callback...
json+callback实现无刷新demo,短小精悍
Delphi MIDAS 回调 (CallBack) Delphi MIDAS 回调 (CallBack)
回调函数Callback_Function