Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1040215
  • 博文数量: 46
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1701
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-24 10:06
文章分类
文章存档

2014年(19)

2013年(27)

分类: 网络与安全

2014-01-06 11:32:07

一、初始逻辑:首先,来看下面的示例,具体看注释。


1
2
3
4
5
6
7
8
    
/**
* 假设这是一个表示可以向目标发起连接的类
*/
publicclassConnectionExample {
publicvoidexecConnection() {
System.out.println("ConnectionExample:连接到谷歌!");
}
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    
/**
* 这是一个管理连接的类
* @author Administrator
*
*/
publicclassConnManager {
/**
* 介绍:通过调用这个方法,可以获取一个连接对象,业务逻辑如方法体
* 说明:假设这是一个旧系统中遗留的或者第三方插件中默认的业务逻辑,
*       整个类和方法你都不能更改或者更改太麻烦
*/
publicConnectionExample createConnection(){
returnnewConnectionExample();
}
}
1
2
    




1
2
3
4
5
6
7
8
9
10
11
12
    
publicclassRun {
/**
* 通过ConnManager的createConnection()方法可以获得初始的Connection,
*     调用其execConnection()方法发起初始的连接请求,原有流程完毕
*/
publicstaticvoidmain(String[] args) {
ApplicationContext context = newClassPathXmlApplicationContext(
"applicationContext.xml");
ConnManager manager = (ConnManager) context.getBean("connManager");
manager.createConnection().execConnection();
}
}

 运行结果:执行Run中的main()方法,控制台输出:ConnectionExample:连接到谷歌!


二、应用拓展:现在,假设需要对Connection做一个拓展,希望可以连接到的目标是自定义的新目标,通过ConnectionExample的createConnection()获取的当然也是拓展的Connection对象。拓展很容易,怎样把这个拓展的Connection在调用createConnection()时取代默认业务逻辑产生的Connection对并返回,才是lookup-method的重点。


1
2
3
4
5
6
7
8
9
    
/**
* 针对默认的Connection拓展
*/
publicclassConnectionExtends extendsConnectionExample {
@Override
publicvoidexecConnection() {
System.out.println("ConnectionExtends:连接到百度!");
}
}


1
2
3
4
5
6
7
    








运行结果:再次执行Run中的main()方法,控制台输出:ConnectionExtends:连接到百度!
阅读(1881) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~