锁定老帖子 主题:啥叫回调吖,以及其使用的场合。
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-29
google了下,答案也没有理想的。 谁结合Java帮咱讲明白吖。。。顺便讲讲适用情况。 PS:感觉这个问题好像很白痴,所以放海版了心里负担小些。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-09-29
没用过Hibernate
|
|
返回顶楼 | |
发表时间:2006-09-29
我跟着一起白痴,
我上次笔记上记得是:callback:通过一个类访问到到他的原始类 |
|
返回顶楼 | |
发表时间:2006-09-29
回调这个东西历史很久了。
我的记忆中C的windows编程中就有了。 基本原理跟好莱坞原则一样,Don't call me,I'll call you. 编程上来说,一般使用一个库或类时,是你主动调用人家的API,这个叫Call,有的时候这样不能满足需要,需要你注册你自己的程序(比如一个对象),然后让人家在合适的时候来调用你,这叫Callback。设计模式中的Observer就是例子。基于事件的编程方式,比如经典的VB、Delphi里用的,那些事件的处理程序都是被调用的方法,都可成为回调(Callback)方法。 |
|
返回顶楼 | |
发表时间: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); } } 顾名思义 回调应该是个类似于触发器的东西吧 |
|
返回顶楼 | |
发表时间:2006-09-29
IoC, Functor, Visitor 都是 callback。
就是一个 Template Methond 里面的flow不变,某一个步骤的具体操作变化,这个变化部分需要从外部(参数,或者属性,或者 override parent method)注入。 类似于从前的 C 回调函数指针。 MainFlow ( callback ){ step1; .... callback( someThing ); .... stepN; } |
|
返回顶楼 | |
发表时间: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) |
|
返回顶楼 | |
发表时间:2006-09-29
是不是可以这样说。
就是回调在Java中 就是调用系统的一个方法,传进去一个接口的实现类 or 匿名类。 然后系统的方法调用接口申明的方法,并且注入相应的参数。 适用与在参数客户无法轻易取得一些参数的情况下。 在Hibernate和Spring中,为了重用session,所以在进行譬如调用存储过程或者复杂的一些getHibernateTemplate默认不提供操作的时候。就可以用HibernateCallBack,然后传入一个实现了doInHibernate接口的匿名类。Spring自己帮我们得到现有的session,注入到匿名类中,完成我们自己写的业务方法。 不知道这样理解对不对。。。请大家指正。还有,现在除了getHibernateTemplate。别的例子我还没想起来,希望大家多举几个例子,说一下回调使用的情况。 |
|
返回顶楼 | |
发表时间:2006-09-29
晕 看看qsort是怎么实现的就知道了
|
|
返回顶楼 | |
发表时间:2006-09-29
冉翔 写道 是不是可以这样说。
就是回调在Java中 就是调用系统的一个方法,传进去一个接口的实现类 or 匿名类。 然后系统的方法调用接口申明的方法,并且注入相应的参数。 基本是这样。 |
|
返回顶楼 | |