JavaScript 设计模式-策略模式

策略模式

  • 策略模式定义一系列的算法,将每一个算法封装起来,并让他们可以相互替换
  • 实现方法定义一组可变的策略类封装具体算法,定义一组不变的环境类将请求委托给某一个策略类
  • 使用场景适用于业务场景中需要判断多种条件,甚至包含复杂条件嵌套的,可以使用策略模式来提升代码的可维护性和可读性。比如支付,博客权限校验
// 定义策略类
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
posted @ 2020-10-27 15:42  荣光无限  阅读(118)  评论(0编辑  收藏  举报