# Propósito
El patrón Mediator (Mediador) tiene como objetivo reducir la complejidad de las comunicaciones entre múltiples objetos o clases, centralizando la interacción en un solo lugar.
# Problema
-
Alto Acoplamiento: Demasiadas conexiones directas entre clases hacen que el sistema sea frágil.
-
Comunicación Compleja: Difícil de entender y mantener el flujo de mensajes entre múltiples componentes.
# Solución
-
Centralización: Las clases se comunican únicamente a través de un objeto mediador central.
-
Simplificación: El control de la interacción reside en un solo punto, desacoplando los colegas.
# Estructura
# Participantes
- Mediator: Define la interfaz de comunicación.
- ConcreteMediator: Coordina la comunicación real entre colegas.
- Colleague: Clase base/interfaz para los componentes.
- ConcreteColleague: Objetos que se comunican vía el mediador.
# Cuándo Usarlo
Cuando hay muchos objetos interactuando de forma compleja pero bien definida y se quiere centralizar la lógica de comunicación.
# Ventajas
-
verified
Bajo Acoplamiento: Disminuye dependencias directas.
-
verified
Mantenibilidad: Cambios en la comunicación en un solo lugar.
# Desventajas
-
warning
God Object: El mediador puede volverse excesivamente complejo.
-
warning
Rendimiento: Cuello de botella en sistemas de alta carga.
# Ejemplo: Control de Tráfico Aéreo
Gestión de torre de control, aviones y pistas sin comunicación directa entre aeronaves.
# Código Java
interface AirTrafficMediator {
void register(Component c);
void send(String msg, Component c);
}
class TowerMediator implements AirTrafficMediator {
private List<Component> comps = new ArrayList<>();
public void send(String msg, Component origin) {
for (Component c : comps) if (c != origin) c.receive(msg);
}
}
# Mapeo Participantes
- Tower (Mediator): Punto central de coordinación.
- Airplane/Runway (Colleagues): Componentes aislados.
- AirportSystem: Client.
# Conclusiones
Ideal para sistemas donde múltiples objetos deben colaborar sin tener una red de dependencias enmarañada.
# Patrones relacionados
Observer
Mantiene sincronizados a los colegas de forma dinámica.
Facade
Mediator centraliza interacción, Facade simplifica el acceso exterior.