我过去四年一直在使用C#,因此我对C++中的最佳实践和常见设计模式感兴趣。考虑以下部分示例:
class World
{
public:
void Add(Object *object);
void Remove(Object *object);
void Update();
}
class Fire : Object
{
public:
virtual void Update()
{
if(age > burnTime)
{
world.Remove(this);
delete this;
}
}
}
在这里,我们有一个负责管理一组对象并定期更新它们的世界。 火是可能在许多不同情况下添加到世界中的对象,但通常是由已经存在于世界中的另一个对象添加的。火是唯一知道自己何时烧尽的对象,因此我目前让它自行删除。创建火的对象很可能已不存在或不相关。
这样做是否明智,还是有更好的设计可以帮助清理这些对象?