使用JavaScript浅谈策略模式

什么是策略模式?

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

没错定义就是这么简单。

下面我们来看一个例子:

function getLevel(level) {
    if (level === 'A') {
        console.log('大师');
    }
    else if (level === 'B') {
        console.log('专家');
    }
    else if (level === 'C') {
        console.log('菜鸡');
    }
}
getLevel('C');

我们给出了一个获取自己编程等级的函数,一看没有什么,很正常,但是我们增加新的等级的时候就只有在函数里面一个一个去增加了,而且又增加了许多if else条件判断语句。这样子很不好,下面我们用策略模式改造一下:

var obj = {
    "A": function(){console.log('大师')},
    "B": function(){console.log('专家')},
    "C": function(){console.log('菜鸡')},
}
function getLevel(level) {
    obj[level]();
}
getLevel('C');

好了我们现在已经修改好了,我们看看是不是符合策略模式的定义,没错符合,这个就是策略模式在JavaScript中的一个简单实现。

我们首先定义了一系列算法,然后把他们统一封装起来了,然后我们的目的就是获取自己的编程等级,我们只需要传入相应的参数,就能获取到对应的等级。

看到这里,我想有一句歌词能表达你内心的想法,“小朋友,你是不是有很多问好?”。

这算个毛的设计模式啊,我们平常都在使用啊!没错设计模式并不是很高级的东西,说不定你的代码中存在着大量的设计模式。

这个例子可能体会不出策略模式的精髓,但用来入门够了,具体怎么使用只要靠自己的经验积累。

原文地址:https://www.cnblogs.com/jsydb/p/12527587.html