#对象池#
对象池
对象池设计模式是单例模式的一种演变.与单例模式的访问一个对象不同,对象池模式提供访问多个对象的方法.对象池模式在要在多个类似对象中取得一个对象的情况下比较常用.
过程
初始化
.被管理的对象集合在这步准备好.checkout
.需要对象的元素从池中借走一个对象.使用对象
.这步不需要池的任何动作.被使用的对象不能被其他元素借走.check-in
.元素归还借走的对象.
策略
对象创建策略
对象池中的对象可以一次性创建
,也可以在被需要时再创建,成为惰性创建
.一次性创建使得初始化对象的代价在他们被需求之前就已经显现.而惰性创建可以让创建对象的花销较小.
对象复用策略
最简单的方法是使用信任策略
,意味着你相信被返回到池的对象都是可用的.与之相对的,使用不信任策略
,意味着对象在返回池之前会被检查它们是否可以再次被使用.
空池策略
顾名思义,空池策略着眼于在池中没有对象时池的行为.最简单的方法是采用阻塞策略
,意味着请求对象的线程会被一直堵塞知道池中重新出现了对象.堵塞策略可能会影响程序的性能.在与不信任策略
一起使用时,堵塞策略可能会让程序堵塞.请求失败策略
是另一种方法.在请求对象前,请求者要指出能等待的最长的时间.一个失败的请求意味着我们要事先准备一个应对这种情况,请求不了对象,的解决方案.
分配策略
分配策略决定了一个可用的对象是怎么被分配去满足一个请求的.常见的方法有先进先出
和最少使用优先
.