Я читаю книгу «Внедрение доменного дизайна» Вона Вернона.Но вскоре у меня возникают проблемы с моделированием агрегатов в моем домене - футбольные матчи.
В моем случае перечисляются все совпадения на основе некоторых условий (фильтров), например:
- перечисляют всематчи лиги, которые состоятся
- список всех матчей лиги в группе
- список всех матчей лиги на стадии нокаута
Как я вижуЛига (например, Кубок мира) будет иметь много этапов, таких как групповой этап или этап нокаута.
На этапе будет много раундов, например.Раунд 16, Четвертьфиналы и т. Д.
В раунде будет много матчей.
Однако в некоторых лигах нет этапа , например.Премьер Лига.Даже в дружественных международных лигах нет ни этапа, ни раунда .
Первое решение:
У нас будет 4 агрегата:
- Лига будет содержать Этапы
- Этап будет содержать Раунды
- Раунд будет содержать Матчи
Для лиг, не имеющих Стадию или Раунд, специальный идентификатор будетбыть созданным для этапа и раунда, напр.NO_STAGE или NO_ROUND
Второе решение:
Лига будет содержать Матчи.Этап или Раунд - это просто атрибуты (Объекты Значения) Матча
Третье решение:
Создание всех типов Лиги:
- Лига имеетэтапы, раунды и матчи
- Лига имеет раунды и матчи
- Лига имеет только матчи