ddd-tactical-patterns
الگوهای تاکتیکی DDD: entity، value object، aggregate و رویداد
این اسکیل الگوهای تاکتیکی DDD را در کد با entity، value object، aggregate، repository و رویداد دامنه و ناورداهای صریح پیاده میکند.
چه چیزی میگیرید
- entity و value object
- aggregate و ناوردا
- رویداد دامنه
برای چه کاری خوب است
- پیادهسازی DDD
- منطق کسبوکار پیچیده
برای چه کاری نیست
- CRUD ساده
دربارهٔ این اسکیل
DDD Tactical Patterns
Use this skill when
- Translating domain rules into code structures.
- Designing aggregate boundaries and invariants.
- Refactoring an anemic model into behavior-rich domain objects.
- Defining repository contracts and domain event boundaries.
Do not use this skill when
- You are still defining strategic boundaries.
- The task is only API documentation or UI layout.
- Full DDD complexity is not justified.
Instructions
- Identify invariants first and design aggregates around them.
- Model immutable value objects for validated concepts.
- Keep domain behavior in domain objects, not controllers.
- Emit domain events for meaningful state transitions.
- Keep repositories at aggregate root boundaries.
If detailed checklists are needed, open references/tactical-checklist.md.
Example
class Order {
private status: "draft" | "submitted" = "draft";
submit(itemsCount: number): void {
if (!Number.isInteger(itemsCount) || itemsCount <= 0) throw new Error("Order cannot be submitted empty");
if (this.status !== "draft") throw new Error("Order already submitted");
this.status = "submitted";
}
}
Limitations
- This skill does not define deployment architecture.
- It does not choose databases or transport protocols.
- It should be paired with testing patterns for invariant coverage.