Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Patrones de Diseño de Comportamiento

Mediator

Centralizar comunicación entre objetos

Universidad Nacional de Rio Negro - Sede Andina

Definición

El patrón Mediator (Mediador) es un patrón de diseño de comportamiento que define un objeto que encapsula cómo interactúan un conjunto de objetos.

El patrón promueve el desacoplamiento al evitar que los objetos se refieran entre sí explícitamente y permitiendo variar su interacción de forma independiente.

Origen e Historia

Formalizado por el GoF en 1994, el Mediator surgió de la observación de que, a medida que los sistemas crecen, las conexiones entre objetos tienden a volverse densas e inmanejables (el efecto “código espagueti”). El patrón se inspiró en los controladores de tráfico aéreo: los aviones no hablan entre sí para evitar colisiones, sino que todos se comunican con una torre central (el mediador).

Motivación

La motivación principal es evitar un sistema donde cada objeto necesite conocer a todos los demás para funcionar. Este “acoplamiento de muchos a muchos” dificulta la reutilización de objetos individuales, ya que están fuertemente ligados a sus pares.

Contexto

Cuando aplica

Cuando no aplica

Consecuencias de su uso

Positivas

Negativas

Alternativas

Estructura

Diagramas

Diagrama de Clases

Diagrama de Secuencia

Ejemplos

/**
 * Interfaz Mediador.
 */
public interface TorreControl {
    void enviar(String mensaje, Avion avion);
}

/**
 * Clase base para los "Colegas".
 */
public abstract class Avion {
    protected TorreControl mediador;
    public Avion(TorreControl m) { this.mediador = m; }
    public abstract void recibir(String mensaje);
}

/**
 * Mediador Concreto.
 */
public class TorreControlConcreta implements TorreControl {
    private List<Avion> aviones = new ArrayList<>();
    
    public void registrar(Avion a) { aviones.add(a); }
    
    @Override
    public void enviar(String mensaje, Avion origen) {
        for (Avion a : aviones) {
            if (a != origen) a.recibir(mensaje);
        }
    }
}

Ejercicios

Resumen

El Mediator es el “coordinador central”. Su valor reside en transformar una red caótica de dependencias en una estructura en estrella, donde la lógica de negocio sobre cómo colaboran los objetos queda aislada y protegida, permitiendo que los componentes individuales sigan siendo simples y reutilizables.

Próximo paso

Para seguir, conviene pasar a el material siguiente, donde el recorrido continúa sobre esta base.