策略模式定義了一系列演算法,封裝了每個演算法,並使它們可以互換。
在此範例中,我們有一組可應用於購物車的折扣。我們可以傳遞將應用於建構函數的函數,並以這種方式更改折扣金額。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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 };
|
登入後複製
完整的例子在這裡? https://stackblitz.com/edit/vitejs-vite-tygwh3?file=strategy.js
結論
當您有許多相似的類,僅在執行某些行為的方式上有所不同時,請使用此模式。
希望您覺得它有幫助。感謝您的閱讀。 ?
讓我們聯絡吧!你可以在以下位置找到我:
-
中: https://medium.com/@nhannguyendevjs/
-
開發:https://dev.to/nhannguyendevjs/
-
雜湊節點:https://nhannguyen.hashnode.dev/
-
Linkedin: https://www.linkedin.com/in/nhannguyendevjs/
-
X(以前的 Twitter):https://twitter.com/nhannguyendevjs/
-
請我喝杯咖啡: https://www.buymeacoffee.com/nhannguyendevjs
以上是JavaScript 設計模式 - 行為 - 策略的詳細內容。更多資訊請關注PHP中文網其他相關文章!