首页  |  IT相关文档  |  工具软件  |  网站建设  |  程式开发  |  图形设计  |  操作系统  |  服务器类  |  数据库类  |  网络安全  |  网络技术  |  计算机应用  |  站长之家  |  网络游戏
 

热点文章

IT动态

·淘宝与日本雅虎强强联合推出跨国交
·2010年电子书迎来黄金年
·雅虎持巨资对抗谷歌推广
·从BT站点关闭到恢复看待网站转型
·微软Docs.com平台今日正式上线
·谷歌第一季度疯狂收购10家公司
·百度即将推出PC端输入法
·IE市场份额首次跌破60%
·赛迪澄清虚假上市公告
·Opera针对漏洞发布Win/Mac平台10.5
·看待google展示光纤速度
·站长应该抓住有效的长尾机会

GG搜索更多相关
 
当前位置:主页>程式开发>JAVA教程>

从一个ConnectionPool的实现看designpattern的运用四,基础教程网

来源: 作者: 发布时间:2007-05-19
从一个ConnectionPool的实现看design pattern的运用 (四)好了,同学们,大家对上回的“李四猜想”有没有结果呀? 我们的口号是?。。。。。。“没有蛀牙”! 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的地方,欢迎指出!(完)

评论 | 收藏 | | 打印 | 关闭
相关链接
     
 

Copyright 2006-2007 xhit.cn All Rights Reserved
有什么建议或意见请发信到admin@xhit.cn 皖ICP备07007336