本文主要由网上整理而来
概念
策略模式是定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换。
一个类的行为和其算法可以在运行的时候更改。
标准范式
// 定义一个策略
let priceceStrategy = function(){
// 内部算法对象
// 策略类
let strategy = {
return30(price){
return price + parseInt(price / 100) * 30
},
return50(price){
return price + parseInt(price / 100) * 50
},
price80(price){
return price * 80 / 100
},
price90(price){
return price * 90 / 100
}
}
// 调用策略方法接口
// 环境类
return (type, price) => {
return strategy[type] && strategy[type](price)
}
}();
/*
* 调用
* priceceStrategy('return30', 100)
*
*/
特点
由上面的标准范式中可以看到有两个类注释,分别策略类和环境类;
策略类保存所有的策略名对应的算法;
环境类用来调用具体的策略类中的策略算法;
使用场景
在有多种相似算法的情况下,使用if...else所带来的复杂和年便已维护的问题。
旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。
商场促销方式,打折、满减等。