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

来源:互联网 发布:云计算的网络架构术语 编辑:程序博客网 时间:2024/05/16 05:05

Object Pool 模式

关键特征:

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

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

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

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

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

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