Mediator
Catégorie
Pattern comportemental
Problème
Réduire le couplage entre les classes qui communiquent entre elles en les faisant communiquer indirectement via un objet médiateur. Sans médiateur, les classes ont des références directes les unes aux autres (couplage en spaghettis).
Solution
- Créer un objet Mediator qui encapsule la façon dont un ensemble d’objets interagissent
- Les classes Colleague communiquent entre elles uniquement via le médiateur
- Le médiateur coordonne l’interaction et connaît tous les collègues
Structure
- Mediator : Interface pour communiquer avec les objets collègues
- ConcreteMediator : Implémente le médiateur ; connaît et coordonne les collègues
- Colleague : Interface pour les objets collègues
- ConcreteColleague : Communique avec d’autres collègues via le médiateur
Avantages clés
- Couplage réduit — Les collègues n’ont pas besoin de se connaître
- Contrôle centralisé — La logique d’interaction est centralisée dans le médiateur
- Collèges simplifiés — Les collègues sont plus simples car ils ne gèrent pas de relations complexes
Compromis
- Le médiateur devient complexe — Le médiateur peut devenir un objet god gérant toutes les interactions
- Indirection — Plus difficile de comprendre le flux de contrôle
Quand l’utiliser
- Un ensemble d’objets communiquent selon des modèles bien définis mais complexes
- Réutiliser un objet est difficile car il communique avec beaucoup d’autres
- Vous voulez personnaliser un motif distribué parmi de nombreuses classes