Patrón Mediator
¿Qué es el Patrón Mediator?
El Mediator es un patrón de diseño de comportamiento que centraliza la comunicación entre múltiples objetos, reduciendo las dependencias directas entre ellos. Esto simplifica las interacciones y facilita el mantenimiento del sistema.
Código de Ejemplo en JavaScript
class Mediator {
constructor() {
this.components = {};
}
register(component) {
this.components[component.name] = component;
component.setMediator(this);
}
notify(sender, event) {
if (event === "message") {
console.log(`${sender.name} envió un mensaje: "${sender.message}"`);
Object.values(this.components).forEach((component) => {
if (component !== sender) {
component.receiveMessage(sender.message);
}
});
}
}
}
class Component {
constructor(name) {
this.name = name;
this.mediator = null;
this.message = "";
}
setMediator(mediator) {
this.mediator = mediator;
}
sendMessage(message) {
this.message = message;
this.mediator.notify(this, "message");
}
receiveMessage(message) {
console.log(`${this.name} recibió el mensaje: "${message}"`);
}
}
// Uso del Patrón Mediator
const mediator = new Mediator();
const component1 = new Component("Componente1");
const component2 = new Component("Componente2");
const component3 = new Component("Componente3");
mediator.register(component1);
mediator.register(component2);
mediator.register(component3);
component1.sendMessage("Hola a todos!");
Casos de Uso
- Sistemas de chat o comunicación donde múltiples usuarios interactúan.
- Gestión de interacciones en interfaces de usuario complejas.
- Reducción de dependencias entre módulos en sistemas grandes.
Patrones Relacionados
- Observer: Notifica a múltiples objetos sobre un cambio de estado.
- Command: Encapsula solicitudes como objetos.
- Facade: Simplifica la interacción con un sistema complejo, pero no maneja comunicación directa.