zoukankan      html  css  js  c++  java
  • JS设计模式之策略模式

     1、假设现在要根据绩效计算年终奖

    function rewardCalc(level, salary){
        if(level === 'S') {
            return salary * 4
        } else if(level === 'A') {
            return salary * 3
        } else if(level === 'B') {
            return salary * 2
        }
    }

      //上述代码缺陷:1、if else逻辑过多函数庞大    2、缺乏弹性增加绩效就必须深入函数更改代码   3、年终奖计算方法无法复用

    策略模式初步使用, 将方法抽离

    const calcLevelS = salary => salary * 4
    const calcLevelA = salary => salary * 3
    const calcLevelB = salary => salary * 2
    function rewardCalc(level, salary) {
      if(level === 'S'){
       calcLeverS(salary)  
      } else if(level === 'A'){
        calcLevelA(salary)
      } else if(level === 'B') {
        calcLevelB(salary) 
      }
    }
    //计算规则已经分离, 但是if else逻辑过多仍然没有解决  

    再次重构,消除if语句

    const calcLevelS = salary => salary * 4
    const calcLevelA = salary => salary * 3
    const calcLevelB = salary => salary * 2
    function rewardCalc(level, salary) {
        const mapMoney = {
            S: calcLevelS,
            A: calcLevelA,
            B: calcLevelB,
        }
        return mapMoney[level](salary)
    }
  • 相关阅读:
    编程ING:人人都能学会程序设计
    以拯救之因
    使用交互环境
    使用交互环境 连载3
    深入理解Oracle Exadata
    字符编码
    多语境的操作
    挖掘用户需求
    神一样的产品经理——基于移动与互联网产品实践
    产品各类型之间的关系
  • 原文地址:https://www.cnblogs.com/jxjl/p/14119496.html
Copyright © 2011-2022 走看看