Ответ
DDD (Domain-Driven Design) — это подход к разработке ПО, фокусирующийся на моделировании бизнес-логики в соответствии с реальными процессами предметной области. Основная цель — создание гибкой и понятной архитектуры, отражающей бизнес-правила.
Ключевые концепции:
- Домен (Domain) — бизнес-сфера, для которой создаётся ПО.
- Модель (Model) — абстракция бизнес-логики в коде.
- Сущности (Entities) и Объекты-значения (Value Objects) — базовые строительные блоки.
- Агрегаты (Aggregates) — группы связанных объектов, обрабатываемых как единое целое.
- Репозитории (Repositories) — интерфейсы для работы с хранилищами данных.
Пример на TypeScript:
// Value Object
class Address {
constructor(public street: string, public city: string) {}
}
// Entity
class User {
constructor(public id: string, public name: string, public address: Address) {}
}
// Repository
interface UserRepository {
save(user: User): Promise<void>;
findById(id: string): Promise<User | null>;
}
DDD особенно полезен в сложных проектах с насыщенной бизнес-логикой.