Глобальный доступ к объектам; Когда следует использовать репозитории, управляемые доменом

Я следовал принципам DDD (следуя книге Эрика Эванса по этой теме), однако недавно я начал перечитывать книгу и заметил, что, похоже, отклонился от одного из принципов repositories...

"Для каждого типа объекта, которому требуется глобальный доступ, создайте объект, который может создать иллюзию коллекции в памяти..."

Я отклонился от этого в том, что я создаю repository для каждого aggregate и обнаружил, что это подходит мне хорошо. Даже когда aggregate само по себе связано с другим aggregate это просто вопрос обращения к связанному агрегату repository при создании entity (обычно внутри фабрики).

Я обнаружил преимущества этого при выполнении таких операций, как кэширование в моих репозиториях. Это также действительно упрощает разделение между созданием / сохранением объекта и доменом.

Может кто-нибудь дать мне пример того, где этот "Глобальный доступ" не подходит, чтобы помочь мне понять, где я ошибся.

1 ответ

Я считаю, что вы используете неправильные термины... Агрегат не может содержать другие агрегаты. У вас, вероятно, есть связь между этими агрегатами.

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

Другие вопросы по тегам