Decorator

Architecture 🟡 Mid

Definition

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.
#architecture#interview#gof#structural