什么是策略模式?
策略模式的定义是:定义一些列的算法,把它们统一的封装起来,并且可以使它们相互替换。
没错定义就是这么简单。
下面我们来看一个例子:
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中的一个简单实现。
我们首先定义了一系列算法,然后把他们统一封装起来了,然后我们的目的就是获取自己的编程等级,我们只需要传入相应的参数,就能获取到对应的等级。
看到这里,我想有一句歌词能表达你内心的想法,“小朋友,你是不是有很多问好?”。
这算个毛的设计模式啊,我们平常都在使用啊!没错设计模式并不是很高级的东西,说不定你的代码中存在着大量的设计模式。
这个例子可能体会不出策略模式的精髓,但用来入门够了,具体怎么使用只要靠自己的经验积累。