自定义连接池的实现;自定义连接池的问题,自定义连接池的优化,

4 自定义连接池的实现:

编写一个类实现DataSource接口

重写getConnection方法,

初始化提供多个连接,存在内存中(定义一个集合,用于存储连接对象)

获取连接 connection conn  =  集合对象.remove() ;获得移出的连接对象

归还连接 connlist.add(conn);将移出的连接对象 重新添加到连接集合中

 

编写归还的连接方法

5  自定义连接池经常出现的问题:

使用接口的实现类完成的构造

MyDataSource mds = new MyDataSource(); 这种方法不方便程序的扩展

额外提供了方法归还连接

dataSource.addBack(conn);

提供额外的方法,增加用户使用难度

如果不提供自定义方法,通过什么将连接归还到连接池那?解决思路:原来connection中有一个close方法,close方法完成了连接的销毁。将原有 的close的销毁逻辑修改为归还。(增强一个类中的方法。第一 可以采用继承的方式 )

增强一个类中的方法。第一可以采用继承的方式 :继承是增强中最简单的方法,使用条件是:必须能够控制这个类的构造!

第二:采用装饰者模式:(静态代理)

步骤:先写一个类实现与被装饰类相同的接口。然后在类中创建一个指向被修饰对象的引用。不需要增强的方法直接调用被装饰对象的方法(可以使用继承包装类的)。需要增强的方法直接进行增强。

 

装饰者模式的使用条件:增强的类和被增强的类要实现相同的接口。在增强的类中获得被增强类的引用

原始接口:

interface Waiter{

public void server();

}

被增强的类

public class Waitress implements Waiter{

public void server(){

System.out.println(“服务中…”);

}

}

增强的类(必须拥有被增强的对象的引用)

(必须实现被增强类同样的方法)

public class WaiterWrapper implements Waiter{

private Waiter waiter; (定义属性)

public Waitress(Waiter waiter){    (使用引用

this.waiter = waiter;

}

public void server(){

System.out.println(“微笑…”);

waiter.server();

}

}

 

第三:动态代理的方式:最灵活的,写法是最复杂的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值