设计模式(十一)Object Pool模式

Object Pool模式

使用Singleton模式构建对象池管理Manager,初始化N个对象,当需要使用时遍历N个对象,得到空闲对象,不使用时释放该对象。

Object Pool模式关键特征
意图在创建对象比较昂贵,或者对于特定类型能够创建的对象数目有限时,管理对象的重用。
问题对象的创建和管理必须遵循一组定义明确的规则集。通常这些规则都与如何创建对象、能够创建多少个对象和已有对象完成当前任务时如何重用它们等等有关 。
解决方案在需要一个Reusable对象时,Client调用ReusablePool的acquireReusable方法。如果池是空的,那么acquireReusable方法创建一个Reusable对象,否则,就等待直到有Reusable对象返回集合
参与者与协作者ReusablePool管理着Client所有的Reusable对象的可用性。Client然后在一个有限的时间段内使用Reusable对象的实例,ReusablePool包含所有Reusable对象,这样就可以对其以统一的方式进行管理。
效果最适用于对象需求一直非常稳定的时候,需求变化太大会带来性能问题。Object Pool中为了解决这一问题,限制了能够创建的对象的数量。使管理示例创建的逻辑和实例被管理的类分离,可以得到内聚更好的设计。
实现如果可以创建的对象数量有限制,或者池的大小有限制,可以使用一个简单的数组来实现池。否则使用Vector对象,负责管理对象池的对象必须是能够唯一创建这些对象的对象。ReusablePool是用Singleton模式实现的。另一种变体是在Reusable对象中加一个释放方法——让它自己回到池中

参看《设计模式解析》第二版

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值