`
lijiejava
  • 浏览: 262445 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

java回调机制的通俗理解

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

          Ajax代码:

function test{
   if(window.ActiveXObject){
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
   }else if(window.XMLHttpRequest){
      xmlHttp = new XMLHttpRequest();
   }
   xmlHttp.onreadystatechange = callback;
   xmlHttp.open(…);
   xmlHttp.send(null);
}  

function callback{ }   


其中xmlHttp.onreadystatechange = callback 就是表示在state改变时调用callback函数,而这个callback就是一个回调函数。

类比:xmlHttp发出请求就相当于你打电话给你的同学,xmlHttp不知道state何时发生变化,就相当于你不知道你的同学何时能解决问题。Callback函数就相当于你的电话号码,
state发生变化时会调用callback函数,同样你的同学解决问题后会打电话通知你。


Spring中HibernateTemplate的回调机制与模板方法

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

interface CallBack{ 
	public void doCRUD(); 
}

public class HibernateTemplate { 
	
	public void execute(CallBack action){
		getConnection();
		action.doCRUD();
		releaseConnection();
	}
 
	public void add(){
		 execute(new CallBack(){
			public void doCRUD(){
				System.out.println("执行add操作...");
			}
		 });
	}
	
	public void delete(){
		 execute(new CallBack(){
			public void doCRUD(){
				System.out.println("执行delete操作...");
			}
		 });
	} 

	public void getConnection(){
		System.out.println("获得连接...");
	}
	
	public void releaseConnection(){
		System.out.println("释放连接...");
	}
	
}



类比:execute方法可以体现出模板模式。以add方法为例,调用execute方法就相当于你打电话给你的同学,但是你的同学说需要时间,就像execute方法需要首先获得连接一样,于是你把CallBack匿名类传递给它,在它获得连接之后会执行你的add操作,这就相当于你把电话号码告诉你的同学,他解决问题之后再打给你一样。当然这种通俗理解不能很好地体现出Spring中的Callback模式和Template模式合用的简单与灵活,这里只是利于理解一点。
分享到:
评论
14 楼 pangyi 2010-08-03  
请教下:回调是异步的还是同步的?
如果是同步的话,是不是就失去了回调的意义?
13 楼 rainingcn 2010-08-03  
楼主可以当老师了。
12 楼 alex295111 2010-08-03  
<p>其实回调,简单的可以说是:将自己的引用传给别的方法,在别的方法里面,通过自己的引用调用自己的方法</p>
<p> </p>
<p> 就像楼主所说的,将电话号码(自己的引用)给朋友,朋友再打电话(调用自己引用的方法)回拨给自己<img src="/images/smiles/icon_biggrin.gif" alt=""></p>
<p> </p>
<p>应用场景:模版方法很常用</p>
11 楼 Coool 2010-08-03  
讲的虽然简单,不过什么都有适合的人群去看。
知道的就花20秒扫一眼,不知道的恰好当入门。
10 楼 asialee 2010-08-03  
回调感觉就是底层代码一些写好了算法的框架,然后供我们应用代码来调用的。
9 楼 wangying95599 2010-08-03  
果然好懂啊
8 楼 3eee 2010-08-03  
不错,很简单
7 楼 心有余闲 2010-08-03  
很不错,通俗易懂。mark.
6 楼 zhao103804 2010-08-03  
跟ajax的回调函数原理一样
5 楼 flyfan 2010-08-03  
以前一直不理解Hibernate回调的原理,现在有点明白了
4 楼 x1387420 2010-08-03  
讲的不错 通俗易懂
3 楼 Silence_Smile 2010-08-03  
很到位,简单易懂
2 楼 ibadboy 2010-08-03  

晕,讲的太简单了!
1 楼 kaig 2010-08-02  
楼主讲解太通俗易懂了!

相关推荐

    什么是回调函数(最通俗的讲解+实例分析).pdf

    尽管回调机制通常被简化为两个函数之间的交互,但实际上,起始函数在这个过程中起到了关键的作用,它决定了何时以及如何使用回调。 回调函数在很多场景下都有应用,比如事件处理、异步编程、数据处理等。它们让代码...

    一张图让你通俗易懂得理解java反射机制!

    一张图让你通俗易懂得理解java反射机制!

    回调函数讲解

    ### 回调函数详解 #### 一、回调函数的基本概念 在计算机编程中,回调函数是一种特殊的函数,它被作为参数...通过理解和掌握回调函数的工作原理及其应用场景,开发者可以更高效地解决问题并构建出高质量的软件产品。

    源码通俗讲解Java绘图功能机制以及绘图框架的源码

    通俗讲解Java绘图功能机制以及绘图框架的源码

    Java开发中名词的通俗解释共2页.pdf.zip

    这份名为“Java开发中名词的通俗解释共2页.pdf”的压缩文件,显然提供了一份简明扼要的Java编程术语解析,旨在帮助初学者或有经验的开发者更好地理解Java开发中的关键概念。虽然压缩包中似乎还有一个名为“赚钱项目...

    基础java讲解通俗易懂

    在编译阶段,Java源代码文件(.java)被编译成字节码文件(.class),这些字节码文件由JVM解释执行。Java环境变量配置包括设置JAVA-HOME环境变量,指向JDK的安装目录,以及配置Path和ClassPath环境变量,以便操作...

    java与设计模式--通俗易懂的介绍

    本篇将通俗易懂地介绍几种常见的设计模式,并提供相关的Java代码示例。 首先,设计模式主要分为三大类:创建模式、结构模式和行为模式。 **创建模式**关注的是对象的创建。例如: 1. **工厂模式**(Factory ...

    23种设计模式JAVA实现,例子通俗易懂

    本资源提供了23种设计模式的Java实现,通过具体的代码示例帮助开发者深入理解并掌握这些模式。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。防止多线程环境下多个实例的产生,常用于...

    【白盒测试通俗解释及设计方法】白盒测试通俗解释及设计方法

    白盒测试白盒测试通俗解释及设计方法白盒测试通俗解释及设计方法白盒测试通俗解释及设计方法白盒测试通俗解释及设计方法白盒测试通俗解释及设计方法白盒测试通俗解释及设计方法白盒测试通俗解释及设计方法白盒测试...

    通俗易懂的javaIO讲解

    ### 通俗易懂的Java IO讲解 在Java中,输入输出流(IO)是一个非常重要的概念,它涉及到了数据如何从一个地方传输到另一个地方。本文将深入浅出地介绍Java IO的基础概念,并通过实例帮助读者更好地理解这些概念。 ...

    通俗易懂的java设计模式

    本资源“通俗易懂的Java设计模式”旨在帮助初学者和有一定经验的开发者更好地理解和应用这些模式。 首先,设计模式的基本分类包括创建型、结构型和行为型三大类。创建型设计模式如单例(Singleton)、工厂方法...

    Java零基础学习视频通俗易懂

    2. **环境配置**:学习Java的第一步通常是安装Java Development Kit (JDK),并设置好环境变量JAVA_HOME和Path,以便在命令行中运行Java编译器`javac`和解释器`java`。 3. **语法基础**:Java的基础语法包括变量声明...

    21天学通JAVA 更通俗意懂

    这套教程以其通俗易懂的语言和丰富的实例,深受广大JAVA学习者的喜爱。下面我们将深入探讨教程中的关键知识点。 1. **JAVA基础语法**:在第一天的学习中,通常会介绍JAVA的基本结构,包括如何编写第一个"Hello, ...

    JAVA教程通俗易懂不啰嗦

    很详细 又不啰嗦的 ppt教程 通俗易懂不啰嗦

    Java设计模式----通俗易懂版

    这个资源"Java设计模式----通俗易懂版"显然是一个专门针对初学者或需要深入理解设计模式的开发者编写的指南。作者以形象生动的例子解释了23种经典的Java设计模式,使得复杂的概念变得更加易于理解。 首先,我们要...

    Java反射机制.txt

    ava反射机制 概述:通俗地讲Java反射就是通过类名获得类的实例的方法。java.lang.reflect提供了实现Java反射的API。

    网关的最通俗解释

    网关的最通俗解释 迅速理解什么是网关及网关的作用

    PID调节的通俗化理解

    鉴于此,本文力争以通俗的语言讲解PID的各个含义。 PID控制是自动化控制领域应用非常广的控制方式,P代表比例,I代表积分,D代表微分,从这些名词中可以看出,PID控制是基于数学中一项重要的分支:微积分学为基础的...

    Java2048 Java编写的2048小游戏 通俗易懂

    Java2048是一款基于Java编程语言开发的2048小游戏,它的设计简洁明了,界面风格优雅,且具有良好的用户体验。...通过分析和理解这个项目的源代码,可以深入理解Java语言的特性和游戏开发的基本流程。

Global site tag (gtag.js) - Google Analytics