为了管理游戏中的各种资源(字体位图等),我想创建将字符串映射到任何资源的管理器。当此对象超出范围时,释放资源使用的所有内存。
所以基本上如果你想要一个Font,你要么添加它,要么用一个指示其名称的字符串请求它,它会返回一个指向它的指针。这样用户就不必管理任何内存。
这是一款适合小型视频游戏的好设计吗?
由于
答案 0 :(得分:2)
您所描述的是工厂模式与智能指针/范围指针相结合。
这很合理。只要考虑一下你是否真的需要使用字符串来识别资源。枚举可能就足够了。
答案 1 :(得分:2)
如果你的经理返回普通指针,那么这里有一个问题 - 资源会一直存在,直到管理器本身被销毁(这是低效的,特别是对于位图这样的资源),或者直到你明确调用管理器才能摆脱它其中,如果抛出异常,可能不会发生这种情况。对于管理器来说,返回某种类型的智能指针会更好,这些指针可以在资源完成时通知管理器。
答案 2 :(得分:0)
听起来有点像smart pointer,如果它超出范围时自动解除分配。
答案 3 :(得分:0)
您可能需要考虑boost::intrusive_ptr,以便重新计算所有对象。然后,您可以根据需要从经理内部手动处理它们。
当然,您可以编写自己的智能指针类,或者您可以从已经拥有的人那里获取它:
http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/smart_ptr.htm