`
勤业思行
  • 浏览: 82142 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

CallBack原理和实现

    博客分类:
  • j2se
阅读更多

在上一篇文章中讲了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。

1
0
分享到:
评论

相关推荐

    callback.pdf

    callback的原理、实现,很好的技术学习资料

    EasyKotlin#Android-Notes#Java回调的原理与实现1

    * 同步回调public void goToPrintSyn(Callback callback, String text) {* 异步回调public voi

    【JavaScript源代码】vue实现简易计时器组件.docx

    在做项目中难免会碰到需要实时刷新,广告动画依次出现等等需求,刚最近基于业务需求,需要实现一个累加通话时长的计时器,这时候就需要定时器登上我们的代码舞台了,其实对于计时器,它的原理就是通过定时器来实现的...

    【JavaScript源代码】原生JS运动实现轮播图.docx

     原生JS运动实现轮播图 **基本原理:**通过控制包含n张图片的ul的left值来实现图片自动运动的效果,其中列表中li元素的个数为n,第一个li和最后一个li里存放的图片应为同一张图片,当图片运动到最后一张时,将ul的...

    详细分析jsonp的原理和实现方式

    详细分析jsonp的原理和实现方式 一:跨域问题。 二,跨域产生的原因 Js是不能跨域请求。出于安全考虑,js设计时不可以跨域。 什么是跨域: 1、域名不同时。 2、域名相同,端口不同。 只有域名相同、端口相同时,才...

    JSONP原理及简单实现

    虽然在在jquery中,我们可以通过$.ajax的dataType设置为jsonp来调用jsonp,但是jsonp和ajax的实现原理一个关系都木有。jsonp主要是通过script可以链接远程url来实现跨域请求的。如: [removed][removed] callback...

    浅析JSONP技术原理及实现

    跨域问题一直是前端中常见的问题,每当说到跨域,第一浮现的技术必然就是JSONP JSONP在我的理解,它并不是ajax,它是在文档中插入一个script标签,创建...实现逻辑 step1: 创建_callback方法 (_callback中可以删除scr

    详解js跨域请求的两种方式,支持post请求

    JSONP实现跨域 常用的jquery实现跨域调用 $.ajax({ ... dataType: "jsonp", jsonp: "callback", ...这个调用实际上的实现原理是 在网页中构造一个script标签,将src设置为对应的url,并增加上相应的callback参数,形如

    mvvm双向绑定机制的原理和实现代码(推荐)

    1. 首先实现单向绑定,在指定对象的属性值发生改变时触发callback函数。 2. 单向绑定可采用ES5新增的defineProperty实现(或defineProperties),用了ES5注定就不支持IE9以下了,为了防止递归死循环问题,原有属性...

    node.js中RPC(远程过程调用)的实现原理介绍

    刚接触到RPC(远程过程调用),就是可以在本地调用远程机子上的程序的方法,看到一个简单的nodejs实现,用来学习RPC的原理很不错:nodejs light_rpc 使用示例: 代码如下: //服务端 var light_rpc = require(‘./...

    C++使用SOCKET实现TCP-IP协议的通讯最好的DEMO源码

    首先要理解基本的原理,2台电脑间实现TCP通讯,首先要建立起连接,在这里要提到服务器端与客户端,两个的区别通俗讲就是主动与被动的关系,两个人对话,肯定是先有人先发起会话,要不然谁都不讲,谈什么话题,呵呵!...

    nodejs 简单实现动态html的方法

    1.实现的功能及原理 实现了将,用户表单的数据,与html相结合,将用户输入的数据,显示到html对应的位置。 原理:通过正则表达式,替换html中的模板数据 如用户名{name},可以通过拿到用户提交的name的值value,通过 ...

    详解Android中Handler的内部实现原理

    本文主要是对Handler和消息循环的实现原理进行源码分析,如果不熟悉Handler可以参见博文《详解Android中Handler的使用方法》,里面对Android为何以引入Handler机制以及如何使用Handler做了讲解。 概括来说,Handler...

    js框架jquery实现幸运大转盘抽奖程序代码,兼容多种浏览器.zip

    另外可以更方便的通过调用$(el).rotateRight()和$(el).rotateLeft()来分别向右旋转90度和向左旋转90度。 大转盘原理:随机出一个数字,通过后台算出在那个概率区间返回指定跳转的角度 例 一等奖 概率1% 如果在1-100 ...

    react-fiber::Christmas_tree:模拟 react fiber 实现过程

    学习react-fiber实现原理虚拟DOM长啥样更直观一点虚拟DOM就是用JS对象来描述DOM结构,raf概念以及应用raf函数中的callback会在每一帧开始之前执行回调函数会在绘制之前执行requestAnimationFrame(callback) 会在...

    AJAX的原理—如何做到异步和局部刷新【实现代码】

    Overriew: onReadyStateChange被回调函数赋值,则能实现异步调用,回调函数直接操作DOM,则能实现局部刷新。那么XMLHttpRequest的onReadyStateChange如何知道服务ready了呢?状态如何change了呢(观察者模式)?则...

    google-authenticator-util:构建NodeJS模块是为了使其更容易通过google进行身份验证,而无需过多了解其工作原理。 建议将此工具同时用于自动化和开发

    转到 ,然后在您的项目下创建带有http://mydomain/oauth2callback的授权重定向URI的oAuth2凭据(推荐为http://localhost:port/oauth2callback )和Web application类型 创建后下载凭据,以便以后在代码中重复使用。 ...

    原生javascript实现图片轮播效果代码

    【原理简述】 html和css跟JQuery实现图片轮播效果里面的一样,略去。主要是几个公共函数,渐显和渐失,用闭包实现。至于主体逻辑部分,非常一般。 【程序源码】 贴几个公共函数算了,fadeIn,渐显,fadeOut,渐失 代码...

    中高级安卓那些 面试官 最爱问的原理问题(一)

    1、Java泛型的实现机制是怎样的? Java 泛型采用 类型擦除实现 类型编译时被擦除为 object, 不兼容基本类型 类型擦除的实现方案主要考虑向后兼容 ...onActivityResult 确实麻烦,CallBack确实也可以

    动态加载JavaScript文件的3种方式

    该种方式可以实现js文件的动态加载,原理就是在重写文档流,这种方式会导致整个页面重绘。 实现方式: 代码如下:[removed]ln(“[removed][removed]”); 需要注意的是特殊字符的转义。 二、使用jQuery 使用getScript...

Global site tag (gtag.js) - Google Analytics