策略模式
- 策略模式定义一系列的算法,将每一个算法封装起来,并让他们可以相互替换
- 实现方法定义一组可变的策略类封装具体算法,定义一组不变的环境类将请求委托给某一个策略类
- 使用场景适用于业务场景中需要判断多种条件,甚至包含复杂条件嵌套的,可以使用策略模式来提升代码的可维护性和可读性。比如支付,博客权限校验
// 定义策略类
var PaymentMethodStrategy = {
BankAccount: function (money) {
return money > 50 ? money * 0.7 : money
},
CreditCard: function (money) {
return money * 0.8
},
Alipay: function (money) {
return money
}
}
// 运行函数
const userPay = function (selectedStrategy, money) {
return PaymentMethodStrategy[selectedStrategy](money)
}
console.log('银行卡支付价格为:' + userPay('BankAccount', 100)); // 70
console.log('支付宝支付价格为:' + userPay('Alipay', 100)); // 100
console.log('信用卡支付价格为:' + userPay('CreditCard', 100)); // 80