私はいくつかのビューを設計しています。これにはプレイヤーとそのプロパティのリストが表示されるはずですが、異なる視点からのものです。類似のエンティティを持ちながら異なるプロパティを持つ継承の設計
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
ある - そうBaseViewに移動することに意味があります。また、Skill
があります。これは2/3のビューで使用され、おそらく一部の次のビューで使用されるため、ベースビューにも移動できます。
質問は以下のとおりです。
- BaseViewにレンダリングするすべてのプロパティを持つようにして、特定のビューでそれらを使用する場合 - それはOOD違反ではないでしょうか?
- 新しいBaseWithSkillViewを作成する場合(明らかにBaseViewを継承し、
Skill
プロパティレンダリングを実装する)、不要なエンティティではないでしょうか? - (修辞問題)
Name
とExp
をBaseViewに保存し、ViewAとViewBのSkill
プロパティを再実装する場合は、コードをコピーしないでください。
このケースで推奨される方法は何ですか?
UPD:より一般的な質問をするには、20個のプロパティと10個のビューがあり、それぞれが7つの異なるプロパティを表示する必要があるとします。私はBaseWithSkillExpHpManaBonusViewで終わるのではないかと思います。
BaseView、=> BaseWithSkill、=> ViewA、ViewB; BaseView => ViewC –
@ZoharPeled答えがありがとう、私は質問を更新しました。 –