"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Patrones de diseño de JavaScript - Comportamiento - Estrategia

Patrones de diseño de JavaScript - Comportamiento - Estrategia

Publicado el 2024-11-01
Navegar:677

JavaScript Design Patterns - Behavioral - Strategy

El patrón de estrategia define una familia de algoritmos, encapsula cada uno de ellos y los hace intercambiables.

En este ejemplo, tenemos un conjunto de descuentos que se pueden aplicar a un carrito de compras. Podemos pasar la función que aplicaremos al constructor y de esa forma cambiar el monto descontado.

class ShoppingCart {
  constructor(discount) {
    this.discount = discount;
    this.amount = 0;
  }

  checkout() {
    return this.discount(this.amount);
  }

  setAmount(amount) {
    this.amount = amount;
  }
}

function guest(amount) {
  return amount;
}

function regular(amount) {
  return amount * 0.9;
}

function premium(amount) {
  return amount * 0.8;
}

export { ShoppingCart, guest, regular, premium };

¿Aquí hay un ejemplo completo? https://stackblitz.com/edit/vitejs-vite-tygwh3?file=strategy.js

Conclusión

Utiliza este patrón cuando tengas muchas clases similares que solo difieren en cómo ejecutan algún comportamiento.


Espero que te haya resultado útil. Gracias por leer. ?

¡Conectémonos! Puedes encontrarme en:

  • Medio: https://medium.com/@nhannguyendevjs/
  • Desarrollador: https://dev.to/nhannguyendevjs/
  • Hashnode: https://nhannguyen.hashnode.dev/
  • Linkedin: https://www.linkedin.com/in/nhannguyendevjs/
  • X (anteriormente Twitter): https://twitter.com/nhannguyendevjs/
  • Cómprame un café: https://www.buymeacoffee.com/nhannguyendevjs
Declaración de liberación Este artículo se reproduce en: https://dev.to/nhannguyendevjs/javascript-design-patterns-behavioral-strategy-152d?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3