Я пытаюсь понять основы предметно-ориентированного дизайна. Вчера я нашел код в проекте, над которым работаю, где репозиторий возвращал список сущностей, то есть List getMessages (), где сообщение является сущностью (имеет собственный идентификатор и может быть изменен). Теперь, читая о репозиториях в DDD, они довольно четко указывают, что репозиторий должен возвращать агрегированный корень и что любые действия с агрегатом должны выполняться путем вызова методов в агрегированном корне.
Я хотел бы поместить список в отдельный класс, а затем просто вернуть этот класс. Но в моем проекте в принципе нет необходимости делать это, за исключением соблюдения DDD, поскольку мы только показываем сообщения, добавляем новые или удаляем существующее сообщение. Нам никогда не придется удалять все сообщения, поэтому единственные методы, которые у нас будут, это addMessage(...)
, getMessages()
, updateMessage(...)
и removeMessage(...)
, что в основном и делает наша доменная служба.
Есть какие-нибудь идеи? Что лучше всего использовать в DDD для описания агрегатов и репозиториев?