The strategy pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable.
In this example, We have a set of discounts that can be applied to a shopping cart. We can pass the function that we will apply to the constructor and, in that way, change the amount discounted.
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 };
A complete example is here ? https://stackblitz.com/edit/vitejs-vite-tygwh3?file=strategy.js
Conclusion
Use this pattern when you have a lot of similar classes that only differ in how they execute some behavior.
I hope you found it helpful. Thanks for reading. ?
Let's get connected! You can find me on:
The above is the detailed content of JavaScript Design Patterns - Behavioral - Strategy. For more information, please follow other related articles on the PHP Chinese website!