Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 我们都从spring学到了什么? 系列一 之 回调函数的使用
【标  题】:我们都从spring学到了什么? 系列一 之 回调函数的使用
【关键字】:spring
【来  源】:http://blog.csdn.net/lixuehui/archive/2007/04/13/1563146.aspx

我们都从spring学到了什么? 系列一 之 回调函数的使用

Your Ad Here

我们都从spring学到了什么?

1,回调方法的使用
spring使用了大量的回调函数,如HibernateCallBack,打开你的eclipse,ctrl+shift+t,再输入*CallBack,你可以看到有多少地方在使用回调函数,下面分析一下大牛们为什么频繁使用这个CallBack函数。
废话少说,先来个例子说事儿。

 

package com.lixuehui.callbacktest;

public interface MySession {
 
public Object createMyQuery();
}


 

package com.lixuehui.callbacktest;

public class MySessionImpl implements MySession {
 
public Object createMyQuery() {
  
return "Hello,World!";
 }

}


 

package com.lixuehui.callbacktest;

public interface MyHibernateCallBack {
 Object doInHibernate(MySession target);
}


 

package com.lixuehui.callbacktest;

abstract class MyTemplete{
 
protected MySession createSession() {
  
return new MySessionImpl();// 模拟创建一个session
 }


 
protected Object execute(MyHibernateCallBack callback) {
  MySession mySession 
= createSession(); // 模拟创建一个session
  Object object = callback.doInHibernate(mySession);
  
return object;
 }
 
}


class TempClass implements MyHibernateCallBack {
 
public Object doInHibernate(MySession session) {
  
return session.createMyQuery();
 }

}



public class Test extends MyTemplete{

 
public static void main(String[] args) {
  Object object 
= new Test().execute(new MyHibernateCallBack() {
   
//这处new这个接口,创建一个匿名内部类,相当于new了一个实现MyHibernateCallBack接口的类,然后再将这个匿   名对象传给execute方法。
   public Object doInHibernate(MySession session) {
    
return session.createMyQuery();
   }

  }
);
  System.out.println(object);
 }

}

Test类相当于:
public class Test extends MyTemplete {

 
public static void main(String[] args) {
  TempClass temp 
= new TempClass();
  Object object 
= new Test().execute(temp);
  System.out.println(object);
 }

}


 不过这么写灵活度比较低,doInHibernate里的如果做另外的操作的话,就要重复修改TempClass的doInHibernate方法。
看到回调的好处了么?

我觉得这个回调的好处是:
通过创建匿名类,动态实现接口,并实现接口的方法,侧重点在于接口,不在乎实现接口的类,故采用匿名类。
如果你遇到了侧重点在于接口,而不在乎类实现的情况,就可以采取这种回调方式。

Oberser,swing的事件机制,以及java里的自定义事件机制,频繁用的都是回调.
包括java里的main函数,也可以理解为回调
那想想,为什么java *** 的时候就必须走main方法中呢,可见java ***的时候内部也是回调用的main,所以才跑到main方法里.main方法扔给二次开发人员,随意施展.

回调,回调,顾名思义:"你先实现吧,实现完了回头我调你". 呵 呵

本文转自我的javaeye博客: http://lixuehui.javaeye.com/blog/70487 

若转载请注名出处 谢谢

待续 ...

EJB 3.0入门:Stateful Session Bean:【上一篇】
关于CNNet,cnwap j2me联网实践:【下一篇】
【相关文章】
  • Struts 2 + Spring 2 + JPA + AJAX
  • org.springframework.core简单分析
  • 为何不使用spring、struts2、easyjweb等开源框架
  • Spring框架的抽象
  • Spring 学习总结
  • 解读超轻量级DI容器-Guice与Spring框架的区别
  • spring+struts+hibernate开发实例(三)
  • 用Spring 更好地处理Struts 动作,三种整合Struts应用程序与 Spring 的方式
  • jsf和spring的整合
  • 在spring+hibernate3框架中使用HibernateDaoSupport应注意的问题
  • 【随机文章】
  • java实现数据库序号(流水号)
  • 转载:从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
  • 一首不错的歌
  • BCP使用方法
  • 男人感悟100条,值得一读![转]
  • VC中DLL的基本简介
  • Getting Interactive Input in C
  • 获取passwd密码档
  • switch条件语句
  • 黑客如何进行跳板攻击与防御详解
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.