美文网首页
第五章 策略模式

第五章 策略模式

作者: 狐尼克朱迪 | 来源:发表于2016-09-27 16:52 被阅读0次

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

    举一个例子: 公司年底绩效,S有4倍工资,A有3倍工资,B有2倍工资,那么普通的实现如下:

        var calculateBonus = function(_level, _salary){
            if(_level == 'S'){
                return _salary*4;
            }
            if(_level == 'A'){
                return _salary*3;
            }
            if(_level == 'B'){
                return _salary*2;
            }
        }
    

    上面的实现中,如果改了S为5倍工资, 或者添加一个C级别,都要去函数里添加或者修改逻辑。秉承着设计模式将不变的部分和变化的部分隔开这一主题,分析可知,算法的使用方式是不变的,变的是算法本身,因此我们改成下面的形式:

        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);
        }
    

    Peter Norving在演讲中提到:在函数作为一等对象的语言里,策略模式是隐形的。 在js中策略模式已经通道语言的本身里,策略往往被函数所替代。

    相关文章

      网友评论

          本文标题:第五章 策略模式

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