策略模式

优化前代码:

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 平行的关系
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 策略模式的定义:定义一系列的算法,把它们意义封装起来,并且使他们可以相互替换。 策略模式计算奖金 奖金发放的场景:...
    kim_jin阅读 2,224评论 0 1
  • 在程序设计中,我们也常常遇到类似的情况,要实现某一个功能有多种方案可以选择。比如一个压缩文件的程序,既可以选择zi...
    yufawu阅读 2,905评论 0 3
  • 策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 俗话说,条条大路通罗马。在美剧...
    梅梅_1461阅读 3,114评论 0 2
  • 1、策略模式的定义是: 定义一系列的算法, 把它们一个个封装起来, 并且使它们可以相互替换。 不变的部分和变化的部...
    spfi阅读 4,990评论 0 100
  • 【学习难度:★☆☆☆☆,使用频率:★★★★☆】直接出处:策略模式梳理和学习:https://github.com/...
    BruceOuyang阅读 5,418评论 3 5