美文网首页
策略模式

策略模式

作者: Sommouns | 来源:发表于2021-01-14 18:02 被阅读0次

    优化前代码:

    var calculateSalary = function (performanceLevel, salary) {
      if (performanceLevel === 'S') {
        return salary * 3
      }
      else if (performanceLevel === 'A') {
        return salary * 2
      }
      else if (performanceLevel === 'B') {
        return salary 
      }
    }
    

    当要多加一次绩效的时候需要改源码,违反开闭原则,重构后

    var strategy = {
     'S': function (count) {
        return count * 3
      },
     'A': function (count) {
        return count * 2
      },
      'B': function (count) {
        return count 
      },
    }
    
    var calculateSalary = function (performanceLevel, salary) {
      return strategy[performanceLevel && strategy[performanceLevel](salary)
    }
    

    核心

    • Context 负责接受需求,然后分发给对应的策略
    • Strategies 平行的关系

    相关文章

      网友评论

          本文标题:策略模式

          本文链接:https://www.haomeiwen.com/subject/uwnvaktx.html