Bridge
Architecture 🔴 SeniorDefinition
Decouple une abstraction de son implementation pour qu'elles puissent varier independamment. Evite l'explosion combinatoire de sous-classes.
Analogie
Une telecommande universelle : la telecommande (abstraction) fonctionne avec n'importe quelle TV (implementation).
Exemple de code
class Notification {
constructor(sender) { this.sender = sender; }
send(msg) { this.sender.deliver(msg); }
}
// new Notification(new SmsSender()).send('Hi');
Cas d'usage
Quand deux dimensions de variation (ex: forme + couleur) generent trop de sous-classes.
Anti-pattern
Heriter pour chaque combinaison : RedCircle, BlueCircle, RedSquare...