【发布时间】:2015-05-04 13:27:42
【问题描述】:
我想知道其他可能比使用工厂更有效的模式。
【问题讨论】:
-
我不确定您所说的“比工厂更有效率”是什么意思。通常,工厂为您提供程序员的服务,以更好地跟踪对象的分配、索引和删除。因此,如果存在更高效的东西,您也可以将其打包到工厂中。我也想知道..您的内存消耗实际上有多大?您实际上可以利用回收而不是删除和分配多少时间?你做过基准测试吗?
-
参见 C++ 分配器概念和/或内存池 - 例如,
std::vector类模板可以提供一个分配器来控制内存分配的方式 - 这样用户就可以控制分配策略他自己。你可以在你的库中提供类似的机制。 -
您可以让工厂创建由共享智能指针处理的对象。从特定大小的池中获取这些将帮助您控制内存消耗。如果达到限制,您可以扩大池或抛出异常。
-
@Imad 因为客户端和池存储指向对象的指针。使用智能指针可以安全地收缩池。
标签: c++ design-patterns memory-management raii