javaScript的策略模式

本文探讨了在面对多种情况判断时,如何使用策略模式替代冗长的if语句,提高代码的复用性和可维护性。策略模式通过将算法封装和分离,遵循开发-封闭原则,使代码更易于理解和扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们需要判断多种情况时常常会使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值