Patrón Mediator en C#: Guía Completa

Introducción: El coordinador

Mediator centraliza la comunicación entre objetos para reducir acoplamiento. En lugar de que los componentes se conozcan entre sí, todos hablan con un mediador.

Esto simplifica las relaciones y facilita reemplazar componentes sin efectos colaterales.

Coordinador
Prompt: Central hub connecting multiple nodes, clean network diagram style.

1. Naturaleza: Colmena

Las abejas no se coordinan entre sí directamente. La colmena actúa como mediador.

Las señales se canalizan a través del centro de coordinación, evitando que cada abeja tenga que conocer a todas las demás.

Colmena
Prompt: Beehive coordination, minimal nature illustration.

2. Mundo Real: Torre de control

Los aviones no se comunican directamente; la torre coordina las rutas.

Con un punto central, se evitan colisiones y se optimiza el flujo, igual que un mediador reduce interacciones cruzadas.

Torre de control
Prompt: Airport control tower coordinating planes, clean infographic style.

3. Implementación en C#: Código Paso a Paso

public interface IMediador { void Notificar(object emisor, string evento); }

public class Dialogo : IMediador
{
    public Boton Boton { get; set; }
    public TextBox TextBox { get; set; }

    public void Notificar(object emisor, string evento)
    {
        if (emisor == Boton && evento == "click")
            Console.WriteLine($"Enviar: {TextBox.Texto}");
    }
}

public class Boton
{
    private IMediador _m;
    public Boton(IMediador m) { _m = m; }
    public void Click() => _m.Notificar(this, "click");
}

public class TextBox
{
    public string Texto { get; set; }
}

4. Mediator vs Observer

Observer difunde eventos; Mediator coordina interacciones complejas entre colegas.

Si necesitas orquestar reglas entre muchos objetos, Mediator es más claro que múltiples observadores.

5. Diagrama UML

UML Mediator
Prompt: UML diagram of Mediator pattern, clean vector layout.
Flujo mediado
Prompt: Mediation flow diagram, minimal infographic style.

⚠️ Cuándo NO Usar Mediator

  • Si hay pocos objetos y las relaciones son simples.
  • Si el mediador se vuelve un "Dios" con demasiadas reglas.

💪 Ejercicio

Crea un mediador para un chat con usuarios que se comuniquen a través de una sala central.

Conclusión

Mediator reduce el caos de las dependencias múltiples. Es ideal cuando las interacciones entre objetos empiezan a explotar en complejidad.