《设计模式解析》摘录(15)

对象池模式在创建对象成本高或对象数量受限时,管理对象的重用。客户端通过调用对象池的acquireReusable方法获取可复用对象。该模式通过限制可创建对象的数量避免资源过度消耗,有助于提高设计的内聚性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Object Pool 模式

关键特征:

    意图:在创建对象比较昂贵,或者对于特定类型能够创建的对象数目有限制时,管理对象的重用。

    问题:对象的创建和管理必须遵循一组定义明确的规则集。通常这些规则都与如何创建对象、能够创建多少个对象和在已有对象完成当前任务时如何重用它们等等相关。

    解决方案:在需要一个 Reusable 对象时,Client 调用 ReusablePool 的 acquireReusable 方法。如果池是空的,那么 acquireReusable 方法创建一个 Reusable 对象(如果能够),否则,就等待直到有 Reusable 对象返回集合。

    参与者与协作者:ReusablePool 管理着 Client 所用的 Reusable 对象的可用性。 Client 然后在一个有限的时间段内使用 Reusable 对象的实例,ReusablePool 包含所有 Reusable 对象,这样就可以对其以统一的方式进行管理。

    效果:最适用于对对象的需求一直非常稳定的时候,需求变化太大会带来性能问题。Object Pool 中未来解决这一问题,限制了能够创建的对象数量。使管理实例创建的逻辑与实例被管理的类分离,可以得到内聚更好的设计。

    实现:如果可以创建的数量有限制,或者池的大小有限制,可以使用一个简单的数组来实现池。否则,使用Vector 对象。负责管理对象池的对象必须是唯一能够创建这些对象的对象。ReusablePool 是用 Singleton 模式实现的。另一种变体是在 Reusable 对象中加一个释放方法——让它自己返回到池。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值