Упрощенная архитектура домена: отказ от агрегатов в пользу сущностей

В сложных системах часто возникают споры о выборе между богатой и анемичной моделями предметной области. Первая обеспечивает инкапсуляцию и структурирование, но может быть громоздкой. Вторая — проста для понимания, но порождает хаос и дублирование бизнес-логики. Проблема заключается в определении границ агрегатов, которые часто не могут вместить в себя все проверки. Это приводит к дублированию кода и усложнению логики.
Упрощенная архитектура домена: отказ от агрегатов в пользу сущностей
Изображение носит иллюстративный характер

Отказ от агрегатов, при этом сохраняя богатую модель, позволяет сущностям обращаться к другим сущностям напрямую через репозитории. Репозитории становятся коллекциями сущностей в оперативной памяти, а не абстракциями над хранилищем данных. Это позволяет избавиться от транзакций на уровне модели, так как все проверки выполняются в памяти. Логика координации между сущностями обеспечивается делегатами или событиями, что позволяет соблюсти инкапсуляцию.

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

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


Новое на сайте

19905Зачем древние египтяне строили круглые храмы? 19904Планета, на которой вы живёте, но почти не знаете 19903Может ли анализ крови остановить рак печени ещё до его начала? 19902Кто такие GopherWhisper и зачем им монгольские чиновники? 19901«Вояджер-1» готовится к манёвру «большой взрыв»: NASA отключает приборы ради выживания 19900Почему вокруг Чатемских островов появилось светящееся кольцо из планктона? 19899Как взлом Vercel начался с Roblox-скрипта на чужом компьютере 19898Кто лежит в шотландских гробницах каменного века? 19897Почему две англосаксонские сестра и брат были похоронены в объятиях 1400 лет назад? 19896Гормон GDF15: найдена причина мучительного токсикоза у беременных 19895Почему хакеры Harvester прячут вредоносный код в папке «Zomato Pizza»? 19894Робот-гуманоид Panther от UniX AI претендует на место в каждом доме 19893Artemis застряла на земле: NASA не может лететь на луну без новых скафандров 19892Почему 20 000 промышленных устройств по всему миру оказались под угрозой взлома? 19891Зачем египетская мумия «проглотила» «Илиаду»?
Ссылка