Specification

Architecture 🔴 Senior

Définition

Encapsulé une règle métier dans un objet réutilisable et composable. Les spécifications peuvent être combinées avec AND, OR, NOT.

Analogie

Les filtres d'une recherche immobilière : 3 chambres ET jardin ET moins de 300k — chaque critère est un filtre composable.

Exemple de code

class ActiveUserSpec {
  isSatisfiedBy(user) { return user.active && !user.banned; }
}
class AndSpec {
  constructor(a, b) { this.a = a; this.b = b; }
  isSatisfiedBy(x) { return this.a.isSatisfiedBy(x) && this.b.isSatisfiedBy(x); }
}

Cas d'usage

Règles métier complexes réutilisées dans les requêtes, validations et autorisations.

Anti-pattern

Dupliquer les règles métier dans le repository, le service et le contrôleur.

Termes liés

#architecture#interview#ddd

← → au clavier pour passer d'une fiche à l'autre