装饰设计模式小试牛刀:
业务需求:调用连接close()方法时,将连接放回连接池。
解决思路:解决无法重写Connection接口第三方实现类的close方法,所以引入一个装饰设计模式。
理解下面代码需要具备的思想:最主要多态吧, 这样任意实现了Connection接口的对象都可以通过构造函数传参达到与任意连接对象组装的意愿(这句话的代码也省略,切记装饰最大的威力就在这),这样就可以减少代码的复用,缺点还未遇见。
最后说一下:close()呢,这里要理解一点放进连接池里的连接对象已经是自定对象了(这句好的代码省略),是一个由第三方实现类的对象包装起来的对象。没错就是下面的MyConnection,
public class MyConnection implements Connection {
private Connection conn;
private LinkedList<Connection> dataSource;
public MyConnection(Connection conn, LinkedList<Connection> dataSource) {
this.conn=conn;
this.dataSource=dataSource;
}
public void close() throwsSQLException {
dataSource.add(this);
}