【郑州校区】自定义连接池的问题及解决分析
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 一种:采用继承的方式: ***** 继承这种增强是最简单,但是是有使用条件的:必须能够控制这个类的构造!!! [AppleScript] 纯文本查看 复制代码 class Man{
public void run(){
System.out.println(“跑…”);
}
}
class SuperMan extends Man{
public void run(){
System.out.println(“飞…”);
}
} n 二种:采用装饰者模式: ***** 装饰者模式使用条件: * 一、增强的类和被增强的类实现相同的接口 * 二、在增强的类中获得被增强的类的引用 [AppleScript] 纯文本查看 复制代码 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 动态代理的方式 传智播客·黑马程序员郑州校区地址 河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
|