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)
    }
  • 相关阅读:
    用表组织数据
    SQL Server 2008创建数据库
    c#字符串常用方法
    属性升级介绍
    c#语法
    初识C#
    CSS动画
    YCSB性能测试工具使用
    高性能的Redis代理TwemProxy
    JVM垃圾回收总结
  • 原文地址:https://www.cnblogs.com/jxjl/p/14119496.html
Copyright © 2011-2022 走看看