当我们需要判断多种情况时常常会使用ifelse;但这种写法复用性差,缺乏弹性;
传统写法
function getLevel(level) {
if (level === '花泽香菜') {
console.log("黑猫");
} else if (level === '中原麻衣'){
console.log("茱比娅");
} else if (level === '三上枝织') {
console.log('阿卡林');
}
}
getLevel('三上枝织');
所以需要用到策略模式
一.策略模式的定义就是定义一些算法,把他们它们封装起来,并且可以相互替换;
策略模式的优点:
1.利用组合和委托等思想,避免了大量的if语句;
2.策略模式提供了开发-封闭的原则,是代码更容易理解和扩展;
3.策略模式中的代码可以复用;
二.如何使用策略模式重构代码
1.策略模式的目的是通过封装算法将不变的部分和变化的部分分割,实际就是将算法的使用和实现分离出来;算法的使用方式是不变的,而算法的实现由函数的环境决定;
2.一个策略模式至少由两部分构成,一个是策略类,封装的具体的算法,并负责具体的算法过程;一个是环境类,接收客户端的请求,并将请求委托给某个具体的策略类;
3.策略模式不仅仅是封装算法,我们还可以封装一系列的业务规则,只要这些业务规则的目的一致,我们就可以通过策略模式来封装它们
//策略模式
let obj = {
"花泽香菜": function(){console.log('黑猫')},
"中原麻衣": function(){console.log('茱比娅')},
"三上枝织": function(){console.log('阿卡林')},
}
function getLevels(level) {
obj[level]();
}
getLevels('中原麻衣');
参考文章:https://www.cnblogs.com/jsydb/p/12527587.html
参考文章:https://www.cnblogs.com/zooboo/p/9556212.html