美文网首页
策略模式

策略模式

作者: bby365 | 来源:发表于2018-06-27 20:36 被阅读0次

定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换
翻译成人话:根据不同的情况,可以自由调用已经封装好的函数(算法)。
再来看看官方定义:策略模式由两部分组成;第一部分是策略组,封装具体算法,负责具体的计算过程;第二部分是环境类,接受客户请求,然后委托给某一个策略类去处理。

  • js 中的策略模式
    一个计算年终奖的例子
// 第一部分:策略组,负责具体的实现过程
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', 20000 ) ); // 输出:80000
console.log( calculateBonus( 'A', 10000 ) ); // 输出:30000

如果不用这种方式写,使用传统的if-else语句,缺点如下:
需要覆盖所有的逻辑分支,后期更改代码,需要深入到函数内部。

  • 拓展
    策略模式中的 策略组不仅用来封装算法,可以用来封装业务逻辑。

表单验证例子
**用户名不能为空
**密码长度不能少于6位
**手机号必须符合格式

常规方法:if-else 语句
策略模式:P81 一步一步的优化。

相关文章

网友评论

      本文标题:策略模式

      本文链接:https://www.haomeiwen.com/subject/qsbiyftx.html