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.
Whatsapp Mentores Tech