Specification
Architecture 🔴 SeniorDé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.