论坛首页 海阔天空论坛

啥叫回调吖,以及其使用的场合。

浏览 8195 次
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-09-29  
使用Hibernate的回调了N多次。其实还是不太明白啥叫回调。

google了下,答案也没有理想的。

谁结合Java帮咱讲明白吖。。。顺便讲讲适用情况。


PS:感觉这个问题好像很白痴,所以放海版了心里负担小些。
   发表时间:2006-09-29  
没用过Hibernate 
0 请登录后投票
   发表时间:2006-09-29  
我跟着一起白痴,
我上次笔记上记得是:callback:通过一个类访问到到他的原始类
0 请登录后投票
   发表时间:2006-09-29  
回调这个东西历史很久了。
我的记忆中C的windows编程中就有了。
基本原理跟好莱坞原则一样,Don't call me,I'll call you.

编程上来说,一般使用一个库或类时,是你主动调用人家的API,这个叫Call,有的时候这样不能满足需要,需要你注册你自己的程序(比如一个对象),然后让人家在合适的时候来调用你,这叫Callback。设计模式中的Observer就是例子。基于事件的编程方式,比如经典的VB、Delphi里用的,那些事件的处理程序都是被调用的方法,都可成为回调(Callback)方法。

0 请登录后投票
   发表时间:2006-09-29  
引用
      一个回调的实现可以被有效地用在任何Hibernate数据访问中。在任何情况下都由HibernateTemplate来管理Session的开闭和自动的多方事务。模板实例是线程安全和可重用的,因此它们可以做为其他类的变量。


       对于简单的单步的动作,象find, load, saveOrUpdate或者delete的调用,HibernateTemplate提供更为便利的选择以代替象一行的回调的执行。此外,Spring提供了一个方便的基本类,就是HibernateDaoSupport类,它提供了setSessionFactory方法来接受一个SessionFactory,同时提供了getSessionFactory和getHibernateTemplate方法供其继承类使用。将这些结合起来,允许对于典型的需求给出了非常简单的DAO实现:

public class ProductDaoImpl extends HibernateDaoSupport implements ProductDao {

public List loadProductsByCategory(String category) {
return getHibernateTemplate().find(
"from test.Product product where product.category=?", category,
Hibernate.STRING);
}
}
 






顾名思义  回调应该是个类似于触发器的东西吧
0 请登录后投票
   发表时间:2006-09-29  
IoC, Functor, Visitor 都是 callback。

就是一个 Template Methond 里面的flow不变,某一个步骤的具体操作变化,这个变化部分需要从外部(参数,或者属性,或者 override parent method)注入。
类似于从前的 C 回调函数指针。

MainFlow ( callback ){

    step1;
    ....
   
    callback( someThing );

    ....
    stepN;

}
0 请登录后投票
   发表时间:2006-09-29  
In computer programming, a callback is executable code that is passed as an argument to other code. It allows a lower-level software layer to call a function defined in a higher-level layer.


回调这东西吧,本质上应该就是函数过程的重用, 在JAVA中用接口的方式,不过似乎感觉不爽。

在贴近广大人民群众的c和C++中是用函数指针的方式。也就是c和C++中的 "High Order" 方式。

不过还是functional programming languages最COOL.

http://en.wikipedia.org/wiki/Callback_(computer_science)

0 请登录后投票
   发表时间:2006-09-29  
是不是可以这样说。
就是回调在Java中

就是调用系统的一个方法,传进去一个接口的实现类 or 匿名类。

然后系统的方法调用接口申明的方法,并且注入相应的参数。


适用与在参数客户无法轻易取得一些参数的情况下。


在Hibernate和Spring中,为了重用session,所以在进行譬如调用存储过程或者复杂的一些getHibernateTemplate默认不提供操作的时候。就可以用HibernateCallBack,然后传入一个实现了doInHibernate接口的匿名类。Spring自己帮我们得到现有的session,注入到匿名类中,完成我们自己写的业务方法。

不知道这样理解对不对。。。请大家指正。还有,现在除了getHibernateTemplate。别的例子我还没想起来,希望大家多举几个例子,说一下回调使用的情况。
0 请登录后投票
   发表时间:2006-09-29  
晕 看看qsort是怎么实现的就知道了
0 请登录后投票
   发表时间:2006-09-29  
冉翔 写道
是不是可以这样说。
就是回调在Java中

就是调用系统的一个方法,传进去一个接口的实现类 or 匿名类。

然后系统的方法调用接口申明的方法,并且注入相应的参数。


基本是这样。
0 请登录后投票
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics