美文网首页
策略模式

策略模式

作者: 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