Aller au contenu

Mediator

Contexte : Définir un objet qui encapsule la façon dont un ensemble d’objets interagissent. Mediator favorise un couplage lâche en empêchant les objets de se référencer explicitement.

public interface IMediator
{
void Notify(object sender, string ev);
}
public class ConcreteMediator : IMediator
{
private ComponentA _a;
private ComponentB _b;
public void RegisterA(ComponentA a) => _a = a;
public void RegisterB(ComponentB b) => _b = b;
public void Notify(object sender, string ev)
{
if (ev == "A") _b.DoB();
else if (ev == "B") _a.DoA();
}
}

Salle de chat : Un médiateur de chat gère le routage des messages entre les utilisateurs. Les utilisateurs ne se référencent pas directement ; ils envoient au médiateur qui diffuse.

Exemple : Dans .NET, la bibliothèque MediatR implémente le pattern Mediator pour la messagerie intra‑processus. De même, IHttpClientFactory agit comme un médiateur pour créer des instances HttpClient.