MongoDB и Spring Data - Является ли полиморфизм хорошей идеей? - PullRequest
1 голос
/ 09 июля 2019

Допустим, у меня есть три типа документов, и чем они отличаются, так это некоторыми полями.Предположим:

  1. Для типа A: у нас есть field1 и field2
  2. Для типа B: у нас есть только field1 , нонет field2
  3. Для типа C: field3

Все остальные поля одинаковы.Было бы хорошей идеей представлять данные с использованием трех классов, наследуемых от базового класса?

1 Ответ

2 голосов
/ 09 июля 2019

Просто напоминание:

Наследование имеет две стороны: повторное использование и переопределение кода .
Первый решает проблему дублирования (выглядит как ваша идея), а второй определяет для одной и той же концепции различные реализации поведения.
Конечно, в некоторых случаях вы можете извлечь выгоду с обеих сторон.

О вашем вопросе:

Было бы неплохо представить данные с использованием трех классов наследование от базового класса?

Если A, B и C предназначены только для хранения данных (поэтому нет логики / поведения внутри) с учетом общих полей (то есть всех полей, кроме field1, field2 и field3) в базовом классе, смысл. Это избавит вас от дублирования, а дублирование - это неприятный запах.
С другой стороны, если A, B и C также имеют логику, вы должны вводить базовый класс, только если эти классы представляют одну и ту же общую концепцию. В противном случае ваша абстракция неверна и может привести к беспорядочному использованию, когда мы пытаемся манипулировать единообразно (через базовый класс) вещами, которые на самом деле являются разными понятиями.

...