具有相似实体但具有不同属性的继承设计

Inheritance design for having similar entities but with different properties

我正在设计几个视图,它们应该从不同的角度显示玩家列表及其属性。

ViewA shows player's: Name, Exp, Skill, Condition
ViewB shows player's: Name, Exp, Skill, Bonus
ViewC shows player's: Name, Exp, Price, Bid amount

所有视图的共同点是 NameExp - 因此将它们移动到 BaseView 是有意义的。另外,还有一个Skill,用在2/3视图中,可能会在下一个视图中使用,所以也可以移到基础视图中。

问题是:

对于这种情况,推荐的做法是什么?

UPD:为了让问题更通用,假设我有 20 个属性和 10 个视图,每个视图都应该显示 7 个不同的属性。恐怕我最终会得到 BaseWithSkillExpHpManaBonusView。

如果您有 20 个属性和 10 个视图,并且每个视图应显示 ~7 个不同的属性,我建议您使用装饰器模式。

http://www.dotnet-tricks.com/Tutorial/designpatterns/VRQT130713-Decorator-Design-Pattern---C

在这种情况下,您将拥有 IBaseView、BaseView、BaseViewDecorator、HealthDecorator : BaseViewDecorator 等。