A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【郑州校区】自定义连接池的问题及解决分析

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号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马