https://github.com/devstackq/ddd_go
https://github.com/devstackq/ddd_go
Last synced: 12 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/devstackq/ddd_go
- Owner: devstackq
- Created: 2022-05-03T14:13:33.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-05-06T15:56:39.000Z (about 4 years ago)
- Last Synced: 2025-05-19T08:12:16.952Z (about 1 year ago)
- Language: Go
- Size: 27.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
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;