Mediator

Define un objeto que encapsula cómo interactúan un conjunto de objetos, reduciendo el acoplamiento entre ellos.

Contexto

Tienes 7 controles en un formulario que se afectan mutuamente. Cada uno conoce a varios otros — N×N referencias.

Problema
  • Acoplamiento M:N.
  • Difícil añadir/quitar componentes.
Solución

Los componentes se comunican solo con un Mediator central. Pasa de N×N a N×1.

#Ejemplo en C#

public interface IDialogMediator { void Notify(object sender, string evt); }

public class LoginDialog : IDialogMediator
{
    public TextBox User = new(); public TextBox Pass = new(); public Button Login = new();

    public LoginDialog()
    {
        User.Mediator = Pass.Mediator = Login.Mediator = this;
    }

    public void Notify(object sender, string evt)
    {
        if (sender is TextBox && evt == "changed")
            Login.Enabled = User.Text.Length > 0 && Pass.Text.Length >= 8;
    }
}
Cuándo NO aplicarlo

Si el mediator se vuelve un God Object con toda la lógica del módulo.

Tradeoffs
Pro Contra
Reduce acoplamiento entre componentes Centraliza lógica en un único punto
Encaja con MediatR / event bus Riesgo de god object

#behavioral #gof