策略模式--js设计模式与开发实践-7
2017-09-11 22:19
639 查看
// 根据表现水平,来决定年终奖 var calculateBonus=function(performanceLevel,salary){ if(performanceLevel==="S"){ return salary*4 } if(performanceLevel==="A"){ return salary*3 } if(performanceLevel==="B"){ return salary*2 } } console.log(calculateBonus("B", 20000)); console.log(calculateBonus("S", 6000));
calculateBonus函数比较庞大,包含了很多if-else语句;
缺乏弹性,如果增加了一种新的绩效等级C,或者想把绩效S的将近系数改为5,那就需要深入calculateBonus的内如实现,但这样违法开放-封闭原则;
所以可以按照以下来重构代码:
var strategies={ "S":function(salary){ return salary*4 }, "A":function(salary){ return salary*3 }, "B":function(salary){ return salary*2 } } var calculateBonus=function(level,salary){ return strategies[level](salary) } console.log(calculateBonus("S", 2000)); console.log(calculateBonus("B", 10000));
相关文章推荐
- 【学习笔记javascript设计模式与开发实践(策略模式)----5】
- 【学习笔记javascript设计模式与开发实践(策略模式)----5】
- js设计模式与开发实践2
- 【学习笔记javascript设计模式与开发实践(享元模式)----12】
- JS设计模式-策略模式
- 在使用Cocos2d-JS 开发过程中需要用到的单体设计模式
- js设计模式--策略模式
- JS设计模式——策略模式
- 【学习笔记javascript设计模式与开发实践(迭代器模式)----7】
- javascript 设计模式实践之策略模式--输入验证
- javaScript设计模式与开发实践-策略模式
- 【学习笔记javascript设计模式与开发实践----1】
- 【学习笔记javascript设计模式与开发实践(闭包和高阶函数)----3】
- 【JS设计模式】策略模式的代码示例
- JAVA开发的23种设计模式之 --- 策略模式
- ios 开发 设计模式之策略模式
- 《敏捷软件开发-原则、模式与实践》-第七章 什么是敏捷设计
- 【学习笔记javascript设计模式与开发实践----1】
- 【学习笔记javascript设计模式与开发实践(组合模式)----10】
- JS设计模式-策略模式