在程序设计中,要实现一个功能方案有多种,比如压缩文件程序,既可以选择zip压缩算法,也可以选择gzip算法。
上面这个应用场景中抽象出来其实就是策略模式。
策略模式定义:
定义一系列的算法,把他们一个个封装起来,并且可以相互替换。
根据上面定义可以推导出,其实策略模式的目的就是将算法的使用和算法实现分离开来。所以一个基于策略模式的程序至少有两部分组成。
- 第一部分其实是一组策略类,策略类封装了具体的算法。
- 第二部分是环境类(Context),Context接受用户的请求,随后把请求委托给某一个策略类。
应用场景
salary计算
var strategies={
"S":function (salary) {
return salary*4;
},
"A":function (salary) {
return salary*3;
},
"B":function (salary) {
return salary*5;
}
};
var calculateBonus=function (level,salary) {
return strategies[level](salary);
}
console.log(calculateBonus('S',200)); //800
console.log(calculateBonus('A',100)); //300
上面如果我们不用策略模式实现,很可能我们的代码中就会充斥着ifelse这些代码。
form submit verify
这个例子code稍微多些,做了个demo, 确定点我吗
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。