【发布时间】:2010-03-03 11:46:40
【问题描述】:
当有人在 Java 面试中要求您为连接池编写(做/描述)设计时,您通常会写什么。
您是为连接池编写代码还是描述类图。谁能解释一下连接池的设计。
【问题讨论】:
标签: java design-patterns connection-pooling
当有人在 Java 面试中要求您为连接池编写(做/描述)设计时,您通常会写什么。
您是为连接池编写代码还是描述类图。谁能解释一下连接池的设计。
【问题讨论】:
标签: java design-patterns connection-pooling
对象池模式(连接池是它的一个特例)在 Mark Grand 的“Java 模式”中有详细描述。卷。 1'。
这是一个基本的类图(来自谷歌图片):
alt text http://img13.imageshack.us/img13/8448/poolz.png
主要思想:Client 不应该自己创建Reusable 对象。而不是他应该使用ReusablePool。要获得Reusable 对象,他应该调用acquireReusable。当他不再需要Reusable 对象时,他应该通过调用releaseReusable 将其放回低谷。
ReusablePool 包含Reusable 对象的列表。当Client 请求Reusable 时,池查找现有的免费Reusable。如果获取了所有Reusable 对象,则如果列表大小小于maxSize ReusablePool 则再创建一个Reusable 对象。当列表大小等于maxSize 时,池不会创建新的Reusable。取而代之的是,它会等到其他客户将任何Reusable 对象归还给他。
从这个描述你可以得出两个结论:
Reusable 对象不应该有状态(或者它们的状态应该在 releaseReusable 方法中“清除”)
ReusablePool 通常是多线程应用程序的一部分,其所有方法中的所有同步内容都应以适当的方式实现(这不是一件容易的事)。
【讨论】: