javascript策略模式
2016-05-24 14:45
351 查看
在程序设计中,经常遇到一个功能有很多方案可以选择,一个过程下有很多条件分支。
最初的实现方案是对每个情况用if-els判断,如下:
var calculateBonuw=function(level,salary){
if(level=='s'){
return salary*4;
}else if(level=='a'){
return salary*5;
}else if(level=='b'){
return salary*6;
}
}
calculateBonuw('s',2000); //8000
calculateBonuw('a',1000); //5000
上面的代码看起来很简单,但是问题也很明显,如果增加level=‘c’的情况,就需要在if-else语句中再加一组代码加以判断,这违背了开放-封闭原则。
策略模式的定义是:定义一系列的算法,把他们一个个的封装起来,并且是他们可以相互替换。
策略模式的目的就是把算法的使用和算法的实现分离开来。
var strategies={
"s":function(salary){
return salary*4;
},
"a":function(salary){
return salary*5;
},
"b":function(salary){
return salary*6;
}
}
var caluateBonus = function(level,salary){
return strategies[level](salary);
}
caluateBonus("s",2000); //8000
caluateBonus("a",1000); //5000
最初的实现方案是对每个情况用if-els判断,如下:
var calculateBonuw=function(level,salary){
if(level=='s'){
return salary*4;
}else if(level=='a'){
return salary*5;
}else if(level=='b'){
return salary*6;
}
}
calculateBonuw('s',2000); //8000
calculateBonuw('a',1000); //5000
上面的代码看起来很简单,但是问题也很明显,如果增加level=‘c’的情况,就需要在if-else语句中再加一组代码加以判断,这违背了开放-封闭原则。
策略模式的定义是:定义一系列的算法,把他们一个个的封装起来,并且是他们可以相互替换。
策略模式的目的就是把算法的使用和算法的实现分离开来。
var strategies={
"s":function(salary){
return salary*4;
},
"a":function(salary){
return salary*5;
},
"b":function(salary){
return salary*6;
}
}
var caluateBonus = function(level,salary){
return strategies[level](salary);
}
caluateBonus("s",2000); //8000
caluateBonus("a",1000); //5000
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- Extjs4.0 最新最全视频教程
- Javascript中toFixed方法的改进
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 5个常见可用性错误和解决方案
- html5 web数据存储
- 最后一次说说闭包
- Ajax
- SEO
- js数组实现图片轮播
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- [译] React 入门