Skip to content
← Retour au catalogue
Architecturesûrself

ddd-tactical-patterns

Appliquez les modèles tactiques DDD en code en utilisant les entités, les objets de valeur, les agrégats, les référentiels et les événements de domaine avec des invariants explicites.

Le contenu de ce skill est dans sa langue d’origine (souvent l’anglais).

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

  1. Identify invariants first and design aggregates around them.
  2. Model immutable value objects for validated concepts.
  3. Keep domain behavior in domain objects, not controllers.
  4. Emit domain events for meaningful state transitions.
  5. 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 (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.
— Field Manual

Les 1 441 skills, démystifiés en un PDF.

Un guide éditorial gratuit que nous avons écrit pour le Skills Atlas : taxonomie, les 25 skills indispensables, anti-patterns, parcours d’apprentissage par profil.

  • 70+ pages, sommaire, prêt à imprimer.
  • Envoyé par email — lien valide 7 jours.
  • Désabonnement en un clic à tout moment.

Pas de spam. Email jamais partagé. Désabonnement en un clic.