Я разрабатываю несколько представлений, в которых должен отображаться список игроков и их свойства, но с разных точек зрения.Дизайн наследования для похожих объектов, но с разными свойствами
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 и использовать их, в частности, взглядов - не будет ли нарушать ООД?
- Если сделать новый BaseWithSkillView (который, очевидно, наследует BaseView и реализует рендеринг свойств
Skill
) - не было бы это ненужным объектом? - (риторический вопрос) Если удержать
Name
иExp
в BaseView и повторно реализовать объектSkill
в ViewA и ViewB - это не будет копирование кода.
Каковы рекомендуемые методы для этого случая?
UPD: Чтобы сделать вопрос более общим, предположим, что у меня есть 20 объектов и 10 видов, каждый из них должен показать, скажем, 7 разных свойств. Я боюсь, что в итоге у меня получится BaseWithSkillExpHpManaBonusView.
BaseView, => BaseWithSkill, => ViewA, ViewB; BaseView => ViewC –
@ ZoharPeled спасибо за ответ, я обновил вопрос. –