Вопрос проверяет понимание Domain-Driven Design как подхода к проектированию сложных систем через модель предметной области и единый язык.
Domain-Driven Design (DDD) — это не конкретная библиотека или фреймворк, а набор принципов и практик проектирования, предложенный Эриком Эвансом. Его основная идея в том, что сложность программной системы в первую очередь определяется сложностью бизнес-домена, а не технологий. Поэтому модель предметной области должна быть в центре разработки, а код — отражать реальные бизнес-понятия и правила.
class Money { // Value Object
constructor(public readonly amount: number, public readonly currency: string) {}
add(other: Money): Money {
if (other.currency !== this.currency) throw new Error('Currency mismatch');
return new Money(this.amount + other.amount, this.currency);
}
}
class Order { // Aggregate Root
private items: OrderItem[] = [];
constructor(public readonly id: string) {}
addItem(item: OrderItem) {
this.items.push(item);
}
total(): Money {
return this.items.reduce((sum, i) => sum.add(i.price), new Money(0, 'USD'));
}
}DDD особенно полезен в сложных enterprise-системах, где бизнес-логика богата и меняется со временем: банки, страхование, логистика, e-commerce. В простых CRUD-приложениях полный DDD может быть избыточен, но отдельные его идеи (единый язык, value objects) полезны почти всегда.
Итог: DDD стоит применять, когда сложность домена высока и важно, чтобы код точно отражал бизнес-правила и был понятен как разработчикам, так и экспертам предметной области.
Уровень
Рейтинг:
4
Сложность:
7
Навыки
Бизнес-анализ
Сбор требований
Ключевые слова
Подпишись на Node.js Developer в телеграм