Проверяет понимание тактических шаблонов Domain-Driven Design и умение применять их для моделирования сложной бизнес-логики.
Тактические шаблоны DDD — это набор приёмов для построения доменной модели, которая точно отражает бизнес-правила и не смешивается с техническими деталями. Они применяются внутри ограниченного контекста (Bounded Context) и помогают команде говорить с бизнесом на одном языке (Ubiquitous Language).
class Money { // Value Object
constructor(readonly amount: number, 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(readonly id: string) {}
addItem(productId: string, price: Money) {
this.items.push(new OrderItem(productId, price));
}
total(): Money {
return this.items.reduce((sum, i) => sum.add(i.price), new Money(0, 'USD'));
}
}
interface OrderRepository { // Repository
findById(id: string): Promise<Order | null>;
save(order: Order): Promise<void>;
}Тактические шаблоны стоит применять в сложных предметных областях, где бизнес-логика богата и важна её долгосрочная поддержка. В простых CRUD-приложениях они добавляют лишнюю сложность.