在程序设计中,要实现一个功能方案有多种,比如压缩文件程序,既可以选择zip压缩算法,也可以选择gzip算法。
上面这个应用场景中抽象出来其实就是策略模式。

策略模式定义:
定义一系列的算法,把他们一个个封装起来,并且可以相互替换。

根据上面定义可以推导出,其实策略模式的目的就是将算法的使用和算法实现分离开来。所以一个基于策略模式的程序至少有两部分组成。

  1. 第一部分其实是一组策略类,策略类封装了具体的算法。
  2. 第二部分是环境类(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, 确定点我吗


jsdt
4.9k 声望3.9k 粉丝

make a little progress every day


« 上一篇
单例模式
下一篇 »
迭代器模式