前端设计模式——01策略模式

前端设计模式——策略模式

策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。

策略模式的定义:

定义一系列算法,把他们一个个封装起来,并且他们可以相互替换。 或许这样说比较难以理解,举个例子来说,比如你看中的一件衣服,今天打八折,明天打七五折,后天又打八折,这只是算法的不同,也就是策略的不同。

策略模式的应用:

举个例子:某个公司需要设计一个算法为公司的员工计算年终奖金,绩效为S的人有4倍工资,绩效为A的人3倍工资,B的人是2倍。首先我们使用常规的方法实现:

let calculateBonus = function (level,salary) {
    if(level === 'S')
    {
        return salary*4;
    }
    if(level === 'A')
    {
        return salary*3;
    }
    if(level === 'B')
    {
        return salary*2;
    }
}
calculateBonus('S',10000) //输出40000
calculateBonus('B',10000) //输出20000

这种做法缺点就是可扩展性不高,如果公司增加新的考核方案就需要更改代码实现。接着我们使用策略模式实现:

let strategies = {
    "S" :function(salary) {
        return salary*4
    },
    "A" :function(salary) {
        return salary*3
    },
    "B" :function(salary) {
        return salary*2
    },
    "C" :function(salary) {
        return salary*1
    },
}
// 引用
let calculateBonus = function (level,salary) {
    return strategies[level](salary);
}
calculateBonus('S',20000)//输出80000

这样的话就将算法的使用和实现分离开了,在真正的项目中,可以使用json文件或者config文件配置策略。

实际上好多优秀的框架的设计都使用了这种模式,比如Element当中的表单验证,感兴趣的同学可以拜读element的源码。
https://github.com/ElemeFE/element/blob/dev/packages/form/src/form.vue
在这里插入图片描述

如果你觉得这篇文章对你有帮助的话,欢迎关注点赞收藏三连。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值