JAVA学习网首页 把生活查询网加入收藏 把JAVA学习网设为首页 联系方式
    Hi,JAVA学习
JAVA基础 设计模式 数据库 JavaBeans J2EE JavaDelphi 用户界面 综合文章  
从一个ConnectionPool的实现看designpattern的运用(四)
时间:22/04/2007
作者:网络
来源:网络
小提示点这里把文章加入您的收藏夹,方便下次查看
设置文章字体大小:[ ]
 

从一个ConnectionPool的实现看design pattern的运用 ()office:office" />

好了,同学们,大家对上回的“李四猜想”有没有结果呀?

 

我们的口号是?。。。。。。

“没有蛀牙”!

 

No! 是“用户至上”!

 

既然用户有容易忘的可能,那就证明我们的工作做得不好。我们为什么非要用户做他们做不好或容易弄错的事呢?

 

好吧,让我们知错就改:

 

public interface ConnectionMan extends PooledConnection.Pool{

//在这个interface里,我们不再要求程序员必须封装Connection, 他们只需要直接返回Connection对象。 实际上,程序员可以完全忘记封装这码事。

//我们将对返回的对象进行封装。

    Connection getConnection()throws SQLException;

    void clear();

    void closeConnection(Connection conn);

}

 

//然后,我们用一下的decorator类对返回值进行封装

 

public class ConnectionMan2ConnectionPool implements ConnectionPool{

    public final Connection getConnection()throws SQLException{

            return PooledConnection.decorate(man.getConnection(), man);

    }

    public final void clear(){

                man.clear();

    }

    private final ConnectionMan man;

    private ConnectionMan2ConnectionPool(ConnectionMan man){

                this.man = man;

    }

    public static ConnectionPool decorate(ConnectionMan man){

            return new ConnectionMan2ConnectionPool(man);

    }

}

 

这样,程序员只需要实现一个辅助interface ConnectionMan. 完全不要考虑封装Connection的事。然后再用我们的ConnectionMan2ConnectionPool类把它转换成ConnectionPool, 交给ConnectionPool的用户使用。耶!

 

 

“那万一李四忘了用ConnectionMan2ConnectionPool转换怎么办?”

 

呵呵,别忘了,编译器不是吃素的。用户期待ConnectionPool, 而李四只有ConnectionMan, 他想不转换也不行啊!

 

什么?今天的家庭作业?

啊,让你们家长写表扬信给ajoo老师。:)

 

 

 

 

 

 

 

玩笑。如果那位能发现进一步refactor的地方,欢迎指出!

上一篇:从一个ConnectionPool的实现看designpattern的运用(二)

下一篇:DynamicProxy在JavaRMI中的应用

  • 21.3 用Ant来打包
  • Canvas及其支持的按键事件测试小例
  • 2005年阅读的网站RSS与schedule 3rd
  • 解决tomcat5.0中文乱码问题纪录
  • JavaMail中文附件的处理方法
  • 系统界面自动锁定功能实现原理
  • EnterpriseJavaBeansDistilled(5)
  • 利用静态内部类为您的代码添加辅助功能
  • 开发完整J2EE解决方案的八个步骤 4
  • 提供讨论:一个J2EE实现的反面例子
  • 开发完整J2EE解决方案的八个步骤 1
  • J2ME 走向成熟
  • JavaBean10114
  • JSP与JavaMail (四)
  • Java的时间处理(续)
  • 使用PreparedStatement减少开发时间
  • tomcat中部署webservice
  • JB的调试方法(欢迎补充)
  • 返回】 【顶部】 【关闭
    Copyright © 2005-2010 www.594k.com All Rights Reserved.
    版权所有:JAVA学习网 备案序号:皖ICP备06004238号