Patrón Chain of Responsibility
¿Qué es el Patrón Chain of Responsibility?
El Chain of Responsibility es un patrón de diseño de comportamiento que permite enviar una solicitud a través de una cadena de objetos, donde cada objeto decide si maneja la solicitud o la pasa al siguiente en la cadena. Esto reduce el acoplamiento entre el emisor y los receptores de la solicitud.
Código de Ejemplo en JavaScript
class Handler {
setNext(handler) {
this.nextHandler = handler;
return handler;
}
handle(request) {
if (this.nextHandler) {
return this.nextHandler.handle(request);
}
return null;
}
}
class BasicSupport extends Handler {
handle(request) {
if (request === "basic") {
console.log("BasicSupport: Manejo la solicitud básica.");
return true;
}
return super.handle(request);
}
}
class AdvancedSupport extends Handler {
handle(request) {
if (request === "advanced") {
console.log("AdvancedSupport: Manejo la solicitud avanzada.");
return true;
}
return super.handle(request);
}
}
class ExpertSupport extends Handler {
handle(request) {
if (request === "expert") {
console.log("ExpertSupport: Manejo la solicitud experta.");
return true;
}
return super.handle(request);
}
}
// Configuración de la cadena
const basic = new BasicSupport();
const advanced = new AdvancedSupport();
const expert = new ExpertSupport();
basic.setNext(advanced).setNext(expert);
// Enviar solicitudes
console.log("Solicitud: basic");
basic.handle("basic");
console.log("\nSolicitud: advanced");
basic.handle("advanced");
console.log("\nSolicitud: expert");
basic.handle("expert");
console.log("\nSolicitud: unknown");
basic.handle("unknown");
Casos de Uso
- Sistemas de soporte técnico con niveles (básico, avanzado, experto).
- Procesamiento de eventos en un flujo donde cada paso tiene responsabilidades específicas.
- Validaciones de datos complejas en formularios o pipelines.
Patrones Relacionados
- Command: Se centra en encapsular una solicitud como un objeto.
- Strategy: Ofrece diferentes implementaciones para un comportamiento específico.
- Observer: Notifica a múltiples objetos sobre un cambio de estado.