Decorator
Architecture 🟡 MidDefinition
Ajoute dynamiquement des responsabilites a un objet sans modifier sa classe. Offre une alternative flexible a l'heritage.
Analogie
Ajouter des garnitures sur une pizza : chaque garniture enveloppe la precedente et ajoute son propre gout.
Exemple de code
function withLogging(fn) {
return (...args) => {
console.log('Call:', fn.name);
return fn(...args);
};
}
const save = withLogging(saveUser);
Cas d'usage
Ajouter logging, cache, validation ou authentification de facon transparente.
Anti-pattern
Empiler trop de decorateurs rendant le debug et la trace d'erreurs impossibles.