Что такое DDD (Domain-Driven Design)

Ответ

DDD (Domain-Driven Design) — это подход к разработке ПО, фокусирующийся на моделировании бизнес-логики в соответствии с реальными процессами предметной области. Основная цель — создание гибкой и понятной архитектуры, отражающей бизнес-правила.

Ключевые концепции:

  1. Домен (Domain) — бизнес-сфера, для которой создаётся ПО.
  2. Модель (Model) — абстракция бизнес-логики в коде.
  3. Сущности (Entities) и Объекты-значения (Value Objects) — базовые строительные блоки.
  4. Агрегаты (Aggregates) — группы связанных объектов, обрабатываемых как единое целое.
  5. Репозитории (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 особенно полезен в сложных проектах с насыщенной бизнес-логикой.