测试之路,与你同行!

java回调

上一篇 / 下一篇  2012-02-13 23:09:34 / 个人分类:java编程

回调的通俗理解:你有一个复杂的问题解决不了,打电话给你的同学,你的同学说可以解决这个问题,但是需要一些时间,那么你不可能一直拿着电话在那里等,你会把你的电话号码告诉他,让他解决之后打电话通知你。即回调就是体现在你的同学又反过来拨打你的号码。 拿这个例子类比Ajax中的回调机制以及Spring中HibernateTemplate用到的回调+模板机制,可以更容易地理解回调机制。 
Spring中HibernateTemplate的回调机制与模板方法 

HibernateTemplaet的源码很复杂,我们可以写一段简单的代码来模拟一下: 

Java代码  收藏代码
  1. interface CallBack{   
  2.     public void doCRUD();   
  3. }  
  4.   
  5. public class HibernateTemplate {   
  6.       
  7.     public void execute(CallBack action){  
  8.         getConnection();  
  9.         action.doCRUD();  
  10.         releaseConnection();  
  11.     }  
  12.    
  13.     public void add(){  
  14.          execute(new CallBack(){  
  15.             public void doCRUD(){  
  16.                 System.out.println("执行add操作...");  
  17.             }  
  18.          });  
  19.     }  
  20.       
  21.     public void delete(){  
  22.          execute(new CallBack(){  
  23.             public void doCRUD(){  
  24.                 System.out.println("执行delete操作...");  
  25.             }  
  26.          });  
  27.     }   
  28.   
  29.     public void getConnection(){  
  30.         System.out.println("获得连接...");  
  31.     }  
  32.       
  33.     public void releaseConnection(){  
  34.         System.out.println("释放连接...");  
  35.     }  
  36.       
  37. }  



类比:execute方法可以体现出模板模式。以add方法为例,调用execute方法就相当于你打电话给你的同学,但是你的同学说需要时间,就像execute方法需要首先获得连接一样,于是你把CallBack匿名类传递给它,在它获得连接之后会执行你的add操作,这就相当于你把电话号码告诉你的同学,他解决问题之后再打给你一样。当然这种通俗理解不能很好地体现出Spring中的Callback模式和Template模式合用的简单与灵活,这里只是利于理解一点

一.回调是异步的一种表现形式

二.什么时候使用回调?

     答:1.请求服务器的时候使用回调。

         2.创建查询窗口的时候

            例如:某一需求:点击“属性查询”,弹出查询界面,输入查询条件,点击提交;根据查询条件请求服务;成功获得请求信息,失败提示。

           分析:当点击属性查询的时候创建窗口,同时传入回调参数,用于在点击提交的时候执行回调,再在回调中执行查询方法


TAG:

 

评分:0

我来说两句

Open Toolbar