java 回调机制小结
2010-08-03 09:51
316 查看
比较简洁的说明回调机制。。。。
回调的通俗理解:你有一个复杂的问题解决不了,打电话给你的同学,你的同学说可以解决这个问题,但是需要一些时间,那么你不可能一直拿着电话在那里等,你
会把你的电话号码告诉他,让他解决之后打电话通知你。即回调就是体现在你的同学又反过来拨打你的号码。
拿这个例子类比Ajax中的回调机制以及Spring中HibernateTemplate用到的回调+模板机制,可以更容易地理解回调机制。
Ajax代码:
Java代码
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的源码很复杂,我们可以写一段简单的代码来模拟一下:
Java代码
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模式合用的简单与灵活,这里只是利于理解一点。
回调的通俗理解:你有一个复杂的问题解决不了,打电话给你的同学,你的同学说可以解决这个问题,但是需要一些时间,那么你不可能一直拿着电话在那里等,你
会把你的电话号码告诉他,让他解决之后打电话通知你。即回调就是体现在你的同学又反过来拨打你的号码。
拿这个例子类比Ajax中的回调机制以及Spring中HibernateTemplate用到的回调+模板机制,可以更容易地理解回调机制。
Ajax代码:
Java代码
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{ }
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的源码很复杂,我们可以写一段简单的代码来模拟一下:
Java代码
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("释放连接..."
);
}
}
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模式合用的简单与灵活,这里只是利于理解一点。
相关文章推荐
- java回调机制---简单例子说明
- java回调机制
- 一个经典例子让你彻彻底底理解java回调机制
- java回调机制以及android中的回调方法
- Java 异步回调机制实例分析
- JAVA中的回调机制
- 【java/android】回调机制详解
- java回调机制
- Java 回调机制的理解
- JAVA回调机制(CallBack)
- JAVA回调机制(CallBack)
- Java回调机制(一)
- 初识Java回调机制
- Java回调机制解析
- 关于Java的对象的创建和回收机制的小结
- 一个经典例子让你彻彻底底理解java回调机制
- 通俗易懂的例子解释Java回调机制
- java常见的几种调用机制(同步调用,异步调用,回调)
- JAVA回调机制(CallBack)详解
- java 实现回调机制