欢迎光临散文网 会员登陆 & 注册

《游戏编程模式》笔记——对象池模式

2023-09-23 13:43 作者:黑白色的枫  | 我要投稿

意图

放弃单独地分配和释放内存,从固定的池子中重用对象,提高性能和内存使用率。

模式

定义一个池对象,包含一组可重用对象,初始化时创建整个对象集合。需要新对象时就向池子申请一个,使用完后回到池子中。

何时使用

需要频繁创建和销毁对象。

对象大小相仿。

在堆上进行对象内存分配十分缓慢或者会导致内存碎片。

每个对象都封装了像数据库或者网络连接这样昂贵又重要的资源。

设计决策

对象和池耦合吗?

如果对象与池耦合:

实现简单。

保证对象只能被对象池创建。

如果对象没有和池耦合:

最大的好处是可以保存多种类型的对象,可实现通用的、可重用的对象池类型。

谁负责初始化重用对象?

如果在对象池的内部重新初始化:

对象池可以完全封装管理对象。

可能需要提供用来初始化不同情况下的初始化函数。

如果外部代码初始化对象:

对象池的接口更简单,只需要提供返回新对象的引用。

外部代码需要处理无法创建新对象的失败,需要保证代码安全。


参考

《游戏编程模式》

《游戏编程模式》笔记——对象池模式的评论 (共 条)

分享到微博请遵守国家法律