锁定老帖子 主题:java回调机制的通俗理解
精华帖 (5) :: 良好帖 (4) :: 新手帖 (14) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-02
最后修改:2011-06-14
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模式合用的简单与灵活,这里只是利于理解一点。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-08-02
楼主讲解太通俗易懂了!
|
|
返回顶楼 | |
发表时间:2010-08-03
晕,讲的太简单了! |
|
返回顶楼 | |
发表时间:2010-08-03
很到位,简单易懂
|
|
返回顶楼 | |
发表时间:2010-08-03
讲的不错 通俗易懂
|
|
返回顶楼 | |
发表时间:2010-08-03
以前一直不理解Hibernate回调的原理,现在有点明白了
|
|
返回顶楼 | |
发表时间:2010-08-03
跟ajax的回调函数原理一样
|
|
返回顶楼 | |
发表时间:2010-08-03
不错,很简单
|
|
返回顶楼 | |
发表时间:2010-08-03
果然好懂啊
|
|
返回顶楼 | |
发表时间:2010-08-03
回调感觉就是底层代码一些写好了算法的框架,然后供我们应用代码来调用的。
|
|
返回顶楼 | |