在一个项目中,我们的团队正在使用对象列表对应该以类似方式处理的数据集执行大规模操作。特别是,不同的对象在理想情况下会表现相同,这很容易通过多态性实现。我遇到的问题是继承意味着是一种关系,而不是有一种关系。例如,几个对象有一个伤害计数器,但是为了使它易于在对象列表中使用,可以使用多态性——除非这意味着一个不正确的关系。(人不是伤害计数器。)
我能想到的唯一解决方案是让类的成员在隐式转换时返回正确的对象类型,而不是依赖于继承。放弃is a / has a Ideal 以换取易于编程会更好吗?
编辑:更具体地说,我使用的是 C++,因此使用多态性将允许不同的对象“行为相同”,因为派生类可以驻留在单个列表中并由基的虚函数操作班级。使用接口(或通过继承模仿它们)似乎是我愿意使用的解决方案。