加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

设计模式之对象池模式

发布时间:2020-12-13 20:57:35 所属栏目:百科 来源:网络整理
导读:对象池模式 对象池模式,或者称为对象池服务,其意图为: 通过循环使用对象,减少资源在初始化和释放时的昂贵损耗(这里的"昂贵"可能是时间效益(如性能),也可能是空间效益(如并行处理),在大多情况下,指性能) 简单的说,在需要时,从池中提取,不用时,放回池中,等待下

对象池模式

对象池模式,或者称为对象池服务,其意图为: 通过循环使用对象,减少资源在初始化和释放时的昂贵损耗(这里的"昂贵"可能是时间效益(如性能),也可能是空间效益(如并行处理),在大多情况下,指性能)

简单的说,在需要时,从池中提取,不用时,放回池中,等待下一个请求. 典型的例子是连接池和线程池.

类图如下:

设计模式之对象池模式

其中角色如下:

  1. ObjectPool 对象池角色: 提供对象池,其中有两个公共方法,checkOut负责从池中提取对象,checkIn负责回收对象(很多时候,checkIn已经自动化处理,不需要显示生命,如连接池)

对象池实例代码:

设计模式之对象池模式

这是一个简单的对象池实现,在实际应用中还需要考虑池的最小值、最大值、池化对象状态(若有,重点考虑)、异常处理(如满池情况)等方面,特别是池化对象状态,若是有状态的业务对象则需要重点关注.


把对象池化的本意是期望一次性初始化所有对象,减少对象在初始化上的昂贵性能开销,从而提高系统整体性能. 然而池化处理本身也要付出代价,因此,并非任何情况下都适合采用对象池化.

通常情况下,在重复生成对象的操作成为影响性能的关键时,才适合进行对象池化.但是若池化所能带来的性能提高并不显著或重要的话,建议放弃对象池化技术,以保持代码的简明,转而使用更好的硬件来提高性能为佳.

对象池技术在Java领域已经非常成熟,只要做过企业级开发的人员,基本都用过 C3P0、DBCP、Proxool等连接池,这是对象池模式的典型应用. 在实际开发中若需要对象池,建议使用 common-pool 工具包来实现,简单、快捷、高效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读