JavaScript设计模式:策略模式

策略模式是一种行为设计模式,它定义了一系列算法,并将每个算法封装起来,使得它们可以互换。本文通过JavaScript实现展示了如何使用策略模式处理表单验证问题,强调了其优点如避免多重条件选择、支持开放-封闭原则以及代码复用。同时,也指出策略模式可能带来的额外类和选择策略的挑战。
摘要由CSDN通过智能技术生成

策略模式

定义:定义一系列的算法,将他们一个个封装起来,使他们直接可以相互替换。

JavaScript版策略模式实现

const strategy = {
  "S": function (salary) {
    return salary * 4;
  },
  "A": function (salary) {
    return salary * 3;
  },
  "B": function (salary) {
    return salary * 2;
  }
}
let calculateBonus = function (level, salary) {
  return strategy[level](salary);
}
console.log(calculateBonus('A', 20000))

利用策略模式解决的一些应用场景

我们在做一些管理后台系统时,很多时候需要用到各种表单验证的问题。
而各种验证规则可以写入一个策略类中。

const strategies = {
  isNonEmpty(value, errorMsg) { // 判断是否为空
    if (value === '') {
      return errorMsg;
    }
  },
  minLength(value, length, errorMsg) { //欧安的最小长度
    if (value.length < length) {
      return errorMsg;
    }
  }
}

console.log(strategies.isNonEmpty('','用户信息不可为空'));

策略模式的优点:

  1. 策略模式利用组合、委托和多态等技术和思想,可以有效的避免多重条件选择语句。
  2. 策略模式提供了对开放-封闭原则的完美支持,将算法封装在独立的 strategy 中,使得它们易于切换,易于理解,易于扩展。
  3. 策略模式中的算法也可以复用在系统的其他地方,从而避免许多重复的复制粘贴工作。
  4. 在策略模式中利用组合和委托来让 Context拥有执行算法的能力,这也是继承的一种更轻便的替代方案。

策略模式的缺点,但不严重:

  1. 使用策略模式会在程序中增加许多策略类或者策略对象,但实际上这比把它们负责的逻辑堆砌在 Context 中好。
  2. 想要使用策略模式,必须了解所有的 strategy,必须了解各个 strategy 之间的不同点,这样才能选择一个合适的
    strategy。此时 strategy 要向客户暴露它的所有实现,这是违反最少知识原则的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值