Specification

Architecture 🔴 Senior

Definition

Encapsule une regle metier dans un objet reutilisable et composable. Les specifications peuvent etre combinees avec AND, OR, NOT.

Analogie

Les filtres d'une recherche immobiliere : 3 chambres ET jardin ET moins de 300k — chaque critere 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

Regles metier complexes reutilisees dans les requetes, validations et autorisations.

Anti-pattern

Dupliquer les regles metier dans le repository, le service et le controleur.

Termes lies

#architecture#interview#ddd