在一个项目中,我们的团队正在使用对象列表对数据集执行大规模操作,这些数据集应以类似的方式处理.特别地,理想情况下不同的对象将起到相同的作用,这将通过多态性非常容易地实现.我遇到的问题是继承意味着是一种关系,而不是一种关系.例如,有几个对象有一个损坏计数器,但为了使它易于在对象列表中使用,可以使用多态 - 除非这意味着一个关系是不正确的.(一个人不是破坏计数器.)
我能想到的唯一解决方案是让类的成员在隐式转换时返回正确的对象类型,而不是依赖继承.是不是更好的放弃是一个/有一个理想,以换取编程的简易性?
编辑:更具体地说,我正在使用C++,因此使用多态将允许不同的对象"行为相同",即派生类可以驻留在单个列表中并由基础的虚函数操作类.使用接口(或通过继承模仿它们)似乎是我愿意使用的解决方案.
我认为你应该实现接口,以便能够强制执行你的关系(我在C#中这样做):
public interface IDamageable { void AddDamage(int i); int DamageCount {get;} }
您可以在对象中实现此功能:
public class Person : IDamageable public class House : IDamageable
并且你确定DamageCount属性并且有一种方法允许你增加伤害,而不是暗示一个人和一个房子在某种层面上彼此相关.