Nivel 2 · 25 min
Patrones de Comportamiento Avanzados
Los patrones de comportamiento avanzados abordan casos más especializados de comunicación entre objetos: Chain of Responsibility para pipelines de procesamiento, Mediator para comunicación centralizada, Visitor para operaciones sobre estructuras, y Memento para capturar y restaurar estado.
Chain of Responsibility
Chain of Responsibility pasa la request a lo largo de una cadena de handlers. Cada handler decide si procesa la request o la pasa al siguiente. Los filtros de seguridad en web (servlet filters, Spring Security filter chain) son el ejemplo más común. Desacopla el emisor de la request de sus receptores — no sabés qué handler va a procesar efectivamente.
Mediator y Visitor
Mediator centraliza la comunicación entre objetos para evitar dependencias directas. En lugar de que los objetos se comuniquen entre sí (acoplamiento M×N), todos se comunican a través del mediator (acoplamiento M+N). Air traffic control, chat rooms y los event buses son mediators. Visitor permite definir una nueva operación sobre una estructura de objetos sin cambiar las clases. Separa el algoritmo de la estructura — útil para compiladores (AST traversal) e informes sobre estructuras existentes.
Memento
Memento captura el estado interno de un objeto (sin violar encapsulación) para poder restaurarlo luego. El originator crea mementos de sí mismo; el caretaker los almacena sin inspeccionar su contenido. Undo/redo en editores de texto, snapshots de VMs y checkpoints de juegos son ejemplos. En Java, los mementos son frecuentemente objetos de valor inmutables o Records.
Code example
// Chain of Responsibility: pipeline de validacion
interface ValidationHandler {
ValidationResult handle(Order order, ValidationHandler next);
}
class StockCheckHandler implements ValidationHandler {
public ValidationResult handle(Order o, ValidationHandler next) {
if (!stockAvailable(o)) return ValidationResult.fail("Sin stock");
return next != null ? next.handle(o, null) : ValidationResult.ok();
}
}