1.1.1 自定义连接池的问题:
1.1.1.1 使用接口的实现类完成的构造
MyDataSource dataSource = new MyDataSource();
这种写法不方便程序的扩展。
1.1.1.2 额外提供了方法归还连接
// 归还连接:
dataSource.addBack(conn);
这种方式增加使用连接池的用户的难度。
1.1.2 自定义连接池的问题解决
如果不提供自定义的方法就可以解决这个问题,但是连接要如何归还到连接池呢?
1.1.2.1 解决分析的思路
原来在Connection中是有一个close方法的,colse方法完成了连接的销毁。能不能做一个事情,将原有的连接的close方法改为归还。
l 现在要做的事情就是将原有的close方法的逻辑改为归还。(增强一个类中的方法)。
l 如何增强一个类中的方法
n 一种:采用继承的方式:
***
class Man{
public void run(){
System.out.println(“跑…”);
}
}
class SuperMan extends Man{
public void run(){
System.out.println(“飞…”);
}
}
**
n 二种:采用装饰者模式:
***** 装饰者模式使用条件:
* 一、增强的类和被增强的类实现相同的接口
* 二、在增强的类中获得被增强的类的引用
继
interface Waiter{
public void server();
}
public class Waitress implements Waiter{
public void server(){
System.out.println(“服务中…”);
}
}
public class WaitressWrapper implements Waiter{
private Waiter waiter;
public WaitressWrapper(Waiter waiter){
this.waiter = waiter;
}
public void server(){
System.out.println(“微笑…”)
waiter.server();
}
}
承n 动态代理的方式这种增强是最简单,但是是有使用条件的:必须能够控制这个类的构造!!!