Chain of Responsibility
Architecture 🟡 MidDefinition
Passe une requete le long d'une chaine de handlers. Chaque handler decide de traiter la requete ou de la passer au suivant.
Analogie
Le service client : operateur, superviseur, manager — ta demande remonte jusqu'a quelqu'un qui peut la traiter.
Exemple de code
class Handler {
setNext(h) { this.next = h; return h; }
handle(req) {
if (this.canHandle(req)) return this.process(req);
return this.next?.handle(req);
}
}
Cas d'usage
Pipeline de validation, middleware Express, gestion d'evenements DOM (bubbling).
Anti-pattern
Chaine trop longue sans handler par defaut — la requete tombe dans le vide.