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