Я использую шаблон MVP для разработки приложения большого масштаба. Во время работы над разработкой я пришел к вопросу о том, следует ли использовать состав или наследование. Например: допустим, что у меня есть форма с именем Foo с полями A и B. В другой части приложения у меня есть форма Бар, которая имеет те же поля A и B, но дополнительное поле C.
В настоящее время код написан с использованием метода наследования, где вид формы Бар наследуется от формы Foo. Ведущие затем обрабатывают данные, немного отличающиеся от модели. Это работает довольно просто, но превосходит меня, следует ли следовать правилу "А", поскольку даже когда формы различны, они обрабатывают общие входы (A и B).
Однако здесь я думал о "композиции над наследованием" и "Принцип замещения Лискова" и подумал, что я должен быть используя композицию вместо наследования. Однако, поскольку я использую MVP, он был более сложным, чем ожидалось, потому что мне нужно иметь презентатора для формы Foo с полями A и B затем презентатор для Бар с полем C и ссылкой на презентатора Foo, чтобы он мог вводить поля A и B.
Проблема заключается в том, что он оказался больше кода, так как мне придется добавлять некоторые родоразрядники и сеттеры в презентаторе Foo, чтобы он мог передавать данные на Bar. Это так или иначе похоже на то, что я нарушаю MVP, чтобы обеспечить состав.
Итак, мои вопросы:
Действительно ли лучше для моего случая использовать композицию над наследованием? Почему?
Использует ли композиция "break" MVP?