An open API service indexing awesome lists of open source software.

https://github.com/devstackq/ddd_go


https://github.com/devstackq/ddd_go

Last synced: 12 months ago
JSON representation

Awesome Lists containing this project

README

          

#tg_bot, mongo, golang, ddd

entity -> mutable state; field UpperCase -> access - all domains
objectValues - no have ID; -> immutable; use inside 1 domain;

Роль агрегатов — быть объектом бизнес-логики.

DDD предлагает использовать фабрики для создания сложных агрегатов,
«фабрика» используется для сокрытия сложной логики внутри функций, которые создают желаемые экземпляры объектов репозиториев и сервисов
(NewObject - validate, sanitaze, some logic, etc)

DDD говорит, что репозитории должны хранить и управлять агрегатами.
Он полагается на сокрытие взаимодействия с хранилищем за интерфейсом реализации.

Отлично, первый репозиторий готов. Помните, что нужно держать его тесно связанным с соответствующим доменом (поддерживаем высокую сопряжённость, high cohesion).
Не стоит добавлять сюда управление другими агрегатами, ведь мы хотим сохранять слабую связность (loose coupling).

Он свяжет все разрозненные компоненты в бизнес-логику, которая удовлетворит нуждам конкретного домена. В случае с таверной нам понадобится сервис Order, который будет связывать воедино репозитории (CustomerRepository и ProductRepository) для исполнения заказа.

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

patterns; ddd;