什么时候应该继续制作派生类,什么时候应该只向我的代码添加条件语句? 例如针对导弹的情况。
class Object;
class Projectile : public Object;
class Missile : public Projectile;
class MissileGuided : public Missile;
或者我应该在导弹代码中实现最后一个?
void Missile::Update()
{
if(homing && ObjectExists(Target))
TurnTowards(Target.Pos)
Pos += Motion;
}
我认为对于所有的细节,第二个更好,因为您开始得到各种组合(例如,有些导弹可能不会显示在雷达上,有些可能可以被摧毁,有些可能在原目标被摧毁或超出范围后获取新目标等等)。
然而,在某些情况下,常规抛射物也可能具有导弹的一些属性(例如,可以被摧毁,大型抛射物可能会显示在雷达上等)。
然后,我还可以说抛射物与飞船共享属性(两者都移动,碰撞时会造成伤害,可能会显示在雷达上,可能会被摧毁...)。
最终,一切回归到像3个类一样。
class Entity;
class Object : public Entity;
class Effect : public Entity;
在创建派生类和使用标志或其他方式在方法中实现功能之间划分界限的好方法是什么?