❓ Что такое DDD?
DDD (Domain-Driven Design) — подход к проектированию, при котором структура кода отражает структуру бизнес-домена.
Основные строительные блоки:
→ Entity — объект с уникальной идентичностью. Два объекта с одним ID — один и тот же объект, даже если остальные поля разные. Пример: User, Order.
→ Value Object — объект без идентичности, определяется своими атрибутами. Иммутабелен. Пример: Money(100, 'USD'), Email('alice@example.com'). Два Money(100, 'USD') — одно и то же значение.
→ Aggregate — кластер связанных сущностей с одним корнем (Aggregate Root). Все изменения внутри агрегата — только через корень. Граница транзакции = граница агрегата. Пример: Order содержит OrderItems, но только Order — корень.
→ Domain Service — бизнес-операция, которая не принадлежит ни одной сущности. Пример: TransferService(fromAccount, toAccount, amount).
→ Repository — абстракция доступа к хранилищу для агрегатов. Один репозиторий — один агрегат.
→ Domain Event — факт, произошедший в домене. OrderPlaced, PaymentFailed.
→ Bounded Context — явная граница, внутри которой модель имеет единое значение. User в контексте Billing ≠ User в контексте Shipping.
Post #1371
944
- ❤ 6
- 👍 1
- 🔥 1
- 👾 1