我正在设计多个视图,它应该显示玩家及其属性的列表,但是从不同的角度来看。具有类似实体但具有不同属性的继承设计
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
所有视图平常的事是Name
和Exp
- 所以有将它们移动到基本视点感。此外,还有一个Skill
,它在2/3视图中使用,并可能在一些下一个视图中使用,因此它也可以移动到基本视图。
的问题是:
- 如果有所有属性的基本视角呈现,尤其意见使用它们 - 那岂不是违反OOD?
- 如果要制作新的BaseWithSkillView(显然会继承BaseView并实现
Skill
属性渲染) - 它不会是一个不必要的实体吗? - (修辞问题)如果要保留
Name
和Exp
在BaseView中,并在ViewA和ViewB中重新实现Skill
属性 - 是不是代码复制。
这种情况下推荐的做法是什么?
UPD:为了使问题更通用,假设我有20个属性和10个视图,他们每个人都应该显示7种不同的属性。恐怕我会以BaseWithSkillExpHpManaBonusView结束。
BaseView,=> BaseWithSkill,=> ViewA,ViewB; BaseView => ViewC –
@ZoharPeled谢谢你的回答,我已经更新了这个问题。 –