Что делать с общими атрибутами во всех объектах и ​​общими атрибутами в некоторых объектах

Я создаю регистратор инвентаризации торговых карточек для своей второй половинки, и у меня возникают трудности с пониманием того, как лучше всего подходить к этой проблеме:

  • У многих карточек есть 11 атрибутов, которые являются общими для всех. Ни одна карта не имеет этих атрибутов.

  • Существует 7 типов карточек с общими 6 атрибутами, которых нет в других классификациях карточек.

Что у меня есть сейчас:

  • У меня есть абстрактный класс, который используется для размещения 11 общедоступных атрибутов.
  • Я включил остальные 6 атрибутов в отдельные конкретные классы.

Что я собирался сделать:

  • Создание абстрактного класса, содержащего основы всех карт
  • Создание еще одного абстрактного класса, который содержит 6 атрибутов, используемых 7 типами карт, как обсуждалось выше.
  • Создание меньших классов для граничных случаев, например, один тип карты имеет два атрибута, которых нет ни в одной из других карт.

Есть ли что-то еще, что я мог бы сделать? Это просто класс данных, в котором хранится информация о каждой карте, и мне не нужно беспокоиться об обработке нулей, если я помещу все это в один и тот же класс. При необходимости я могу предоставить ссылку на GitHub, но я бы предпочел этого не делать, потому что многие люди, увлеченные игрой, для которой я создаю приложение для инвентаризации, отчитывали меня на Reddit.


person damien.rodriguez    schedule 26.06.2020    source источник


Ответы (1)


Это звучит как хорошее начало.

Я не уверен, что классы должны быть абстрактными и что вам нужны подклассы для каждого типа карт. Вы можете использовать один и тот же класс для разных типов карт и где-то иметь шаблон построителя для создания правильной реализации для данного типа карт.

См. https://refactoring.guru/design-patterns/builder.

Вы также можете взглянуть на шаблон стратегии, чтобы назначить логику различным типам карт, не помещая всю логику в подклассы типов карт.

См. https://refactoring.guru/design-patterns/strategy.

person GreyFairer    schedule 26.06.2020
comment
Благослови твою душу. В этом году я прошел курс по шаблонам проектирования для университета, и, поскольку я немного в этом разбираюсь, это имеет смысл. Большое спасибо. Я обновлю, чтобы увидеть, как это происходит. - person damien.rodriguez; 26.06.2020