2016-05-29 120 views
0

我正在设计多个视图,它应该显示玩家及其属性的列表,但是从不同的角度来看。具有类似实体但具有不同属性的继承设计

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 - 所以有将它们移动到基本视点感。此外,还有一个Skill,它在2/3视图中使用,并可能在一些下一个视图中使用,因此它也可以移动到基本视图。

的问题是:

  • 如果有所有属性的基本视角呈现,尤其意见使用它们 - 那岂不是违反OOD?
  • 如果要制作新的BaseWithSkillView(显然会继承BaseView并实现Skill属性渲染) - 它不会是一个不必要的实体吗?
  • (修辞问题)如果要保留NameExp在BaseView中,并在ViewA和ViewB中重新实现Skill属性 - 是不是代码复制。

这种情况下推荐的做法是什么?

UPD:为了使问题更通用,假设我有20个属性和10个视图,他们每个人都应该显示7种不同的属性。恐怕我会以BaseWithSkillExpHpManaBonusView结束。

+0

BaseView,=> BaseWithSkill,=> ViewA,ViewB; BaseView => ViewC –

+0

@ZoharPeled谢谢你的回答,我已经更新了这个问题。 –

回答

相关问题