java中回调函数的实现
来源:互联网 发布:maxwell软件 百科 编辑:程序博客网 时间:2024/05/10 21:50
在java的事务中,有时候可能会遇到以下情况,第一步是更新某某表,中间可能要更新不确定的多步,最后一步是更新缓存,结构大致如下:
(1)updateA();
(2)updateXX(); //此步骤可能有也可能没有,也可能有多个
(3)updateCache();
此时,因为第二步的不确定性,导致代码不太好写,而我们的更新缓存又必须放在最后一步,那么我们可以使用回调机制来处理。
(更新缓存放在最后一步可以保证以上步骤中任何一步更新出错都可以回滚,如果放在中间的话,更新缓存后面的更新出错了,则更新缓存这一步不会回滚,因为更新缓存不与数据库打交道。)
示例代码如下:
package alan_test;public class TestCallBack { private void updateDB() { System.out.println("update DB"); } private void updateCache() { System.out.println("update Cache"); } public void update( CallBack callBack ) { updateDB(); if(callBack != null) { callBack.doSth(); } updateCache(); } public static void main( String[] args ) { TestCallBack testCallBack = new TestCallBack(); testCallBack.update(new CallBack() { @Override public void doSth() { new AnotherClass().updateXXX(); } }); System.out.println("-------------------------------------------"); testCallBack.update(null); }}class AnotherClass { void updateXXX() { System.out.println("update XXX"); }}interface CallBack { void doSth();}运行结果为:
其中,CallBack的dowSth()中可以添加一系列的更新方法以实现复杂的业务需求的需要。
从设计模式的角度来看,以上这种更倾向于策略模式,如果是监听器方式的回调则更倾向于观察者模式。
注:大家对spring事务操作怎么保证redis缓存与数据库一致有什么好的建议也一起来共享下,谢谢。
(吐槽一下:为什么java中函数不能当做对象使用,像javascript中那样直接传函数回调多简单)
0 0
- java中回调函数的实现
- 在Java中实现回调函数
- Java中实现回调函数
- java回调函数的简单实现
- java中回调函数的理解
- Java中回调函数的使用
- java 中回调函数的理解
- java中回调函数的理解
- java回调函数实现
- java回调函数实现
- Java实现回调函数
- java 中回调函数
- MSDN中回调函数的讲解及其C#例子:用委托实现回调函数
- MSDN中回调函数的讲解及其C#例子:用委托实现回调函数
- MSDN中回调函数的讲解及其C#例子:用委托实现回调函数
- Objective-C利用协议实现回调函数(类似java的回调函数)
- Objective-C利用协议实现回调函数(类似java的回调函数)
- Objective-C利用协议实现回调函数(类似java的回调函数)
- AppCmd
- linux top命令详解
- android 中CoordinatorLayout有什么作用
- linux应用程序:键盘双击与长按识别及串口通讯
- 利用Python 破解类unix系统 /etc/shadow 文件hashed password
- java中回调函数的实现
- 求最大公约数
- Android版本和API Level对应关系从1.0到6.0
- popwindow 挡住 魅族手机虚拟按键
- LINUX下ECHO命令详解---待完善
- 通过SQL Server代理启动Windows服务
- struts中的感叹号方式动态方法调用
- BZOJ_P3262 陌上花开(CDQ分治+树状数组)
- 动态改变listview的高度