Patrón Strategy
¿Qué es el Patrón Strategy?
El Strategy es un patrón de diseño de comportamiento que permite definir una familia de algoritmos, encapsularlos en clases individuales y hacerlos intercambiables. Es útil cuando necesitas cambiar el comportamiento de un objeto en tiempo de ejecución.
Código de Ejemplo en JavaScript
class Context {
constructor(strategy) {
this.strategy = strategy;
}
setStrategy(strategy) {
this.strategy = strategy;
}
executeStrategy(a, b) {
return this.strategy.execute(a, b);
}
}
class AddStrategy {
execute(a, b) {
return a + b;
}
}
class SubtractStrategy {
execute(a, b) {
return a - b;
}
}
class MultiplyStrategy {
execute(a, b) {
return a * b;
}
}
// Uso del Patrón Strategy
const context = new Context(new AddStrategy());
console.log("Suma: ", context.executeStrategy(5, 3)); // Suma: 8
context.setStrategy(new SubtractStrategy());
console.log("Resta: ", context.executeStrategy(5, 3)); // Resta: 2
context.setStrategy(new MultiplyStrategy());
console.log("Multiplicación: ", context.executeStrategy(5, 3)); // Multiplicación: 15
Casos de Uso
- Sistemas que requieren varios algoritmos intercambiables, como estrategias de pago.
- Cálculos matemáticos donde los métodos pueden variar.
- Sistemas de encriptación que permiten cambiar entre diferentes algoritmos.
Patrones Relacionados
- State: Cambia el comportamiento basado en el estado interno, mientras que Strategy se centra en algoritmos intercambiables.
- Template Method: Define la estructura fija de un algoritmo pero permite redefinir partes específicas.
- Command: Encapsula acciones como objetos, mientras que Strategy encapsula algoritmos.