黑马程序员技术交流社区

标题: 【郑州校区】自定义连接池的问题及解决分析 [打印本页]

作者: 我是楠楠    时间: 2019-3-14 15:20
标题: 【郑州校区】自定义连接池的问题及解决分析
【郑州校区】自定义连接池的问题及解决分析

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口出






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2