CallBack原理和实现

在上一篇文章中讲了Spring的JDBC框架—JdbcTemplate模板类。在JdbcTemplate所实现的接口JdbcOperations中并没有用传统的JDBC API类和方法,而是使用了CallBack参数。在JdbcTemplate中对JdbcOperations的方法进行实现时才真正使用传统JDBC API中的类和方法。这里的CallBack是什么?为什么要用?实现机制又是什么?

一、CallBack是什么?

 CallBack很多时候我们叫"回调",也叫"回叫"。就像打电话时对方不在,但在对方手机上保留了未接来电,等对方看见未接来电时再使用未接来电回叫你。

有了这个例子,可以很好地理解在我们的程序开发过程中了。

在一个应用程序中,其中要对一个数组进行排序。由于排序算法效率的问题,暂时不知道要采用什么排序算法比较合理。此时就可以在原本打算实现排序算法的地方(方法)定义一个CallBack参数,然后调用这个CallBack参数(一般CallBack定义为一个接口,然后调用这个接口的方法)。而在真正调用排序算法时才实例化这个CallBack参数,来决定使用何种排序算法来实现。

二、为什么要用CallBack?

从上面我们可以知道,使用CallBack可以使我们的应用程序更加灵活。

三、CallBack的实现机制?

CallBack一般是在原来打算实现功能的方法中定义为方法的参数,然后调用。而具体CallBack的实现是在真正使用时才实例化CallBack,一般采用匿名内部类来实现实际的功能。

四、实例:以上面的排序为例讲解回调的定义和实现。

1、常规方式实现功能:不用CallBack。

package callback;
public class NoUseCallBackSort {  
	    /**   
	     * 具体排序功能实现的定义  
	     */    
	    public   static   void  sort(int[] a){  
	         //具体的排序功能实现代码    
	        }    
	    /**   
	     * 调用排序功能的方法   
	     */    
	    public   void  exeSort(){   
	       int[] arr =new int[5]{31,5,956,7,89};
		   sort(srr);
	    }   
	     
	    public   static   void  main(String[] args) {   
	        NoUseCallBackSort test=new  NoUseCallBackSort();   
	        test.exeSort(); 
	    }   
	}  

 2、使用CallBack的实现:包含两个Java文件

一个是CallBack接口的定义:

package callback;

public   interface  CallBack {   
    //执行回调操作的方法    
    void  execute();   
} 

 然后就是调用CallBack来实现排序的类文件:

ackage callback;

public   class  UseCallBackSort {   
    
    /**   
     * 实现排序功能,通过定义CallBack接口的execute方法   
     * @param callBack   
     */    
    public   void  sort(int[] a,CallBack callBack) {     
        callBack.execute(); ///进行回调操作      
    }   
       
    public   static   void  main(String[] args) {  
        UseCallBackSort test = new  UseCallBackSort();  int arr[]={3,2,4,6,5 };
        test.sort(arr,new  CallBack(){   
            //定义execute方法    
            public   void  execute(){   
                //这里可以加放一个或多个排序方法    
                NoUseCallBackSort.exeSort();   
            }   
        });   
    }   
       
}    

用匿名内部类来实例化CallBack。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值