当有人要求您在Java访谈中为连接池编写(做/描绘)设计时,您通常会写什么。
您为连接池编写代码还是描述类图。可以请人解释一下连接池的设计。
最佳答案
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
对象还给他。
根据此描述,您可以得出2个结论:Reusable
对象不应具有状态(或应在releaseReusable
方法中“清除”其状态)ReusablePool
通常是多线程应用程序的一部分,其所有方法中的所有同步内容都应以适当的方式实现(这不是一件容易的事)。