1.定义

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

2.策略模式的实现-优化if条件过多

以计算年终奖为例子,绩效为S的人年终奖有4倍工资,绩效为A的人年终奖有3倍工资,而绩效为B的人年终奖是2倍工资。

如果没有用策略模式,就会写出下面这样的代码:

let bonus;
if (performanceLevel === 'S') {bonus = salary * 4;
} else if (performanceLevel === 'A') {bonus = salary * 3;
} else if (performanceLevel === 'B') {bonus = salary * 2;
}

像上面这样多个if条件的开发方式,在实际开发非常常见,如果只是三个还好,但需求总会不断增加,若一直以if条件堆叠,维护性就很差。策略模式就可以完美解决这个问题。如下:

// 封装绩效计算规则
const strategies = {"S": function (salary) {return salary * 4;},"A": function (salary) {return salary * 3;},"B": function (salary) {return salary * 2;}
};
// 接受等级与工资进行计算
const calculateBonus = function (level, salary) {return strategies[level](salary);
}
calculateBonus('B', 20000); // 输出:40000
calculateBonus('S', 6000); // 输出:24000

我们将绩效计算规则封装在以等级为key,以算法value的对象中,有效避免多重条件选择语句,显得简洁易于理解。在后期扩展也只需要再对象中新增一项,方便维护。


注:参考书籍《JavaScript设计模式与开发实践》,喜欢可以关注博主哦,不断更新设计模式系列学习笔记~

颜值高的人都已经点赞、评论、收藏啦,你说对吗?

JavaScript设计模式之策略模式-优化if条件过多相关推荐

  1. JavaScript设计模式之策略模式(学习笔记)

    在网上搜索"为什么MVC不是一种设计模式呢?"其中有解答:MVC其实是三个经典设计模式的演变:观察者模式(Observer).策略模式(Strategy).组合模式(Composi ...

  2. 换个姿势学设计模式:策略模式

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源:公众号「闻人的技术博客」 前言 前段时间,接到一个 ...

  3. 小白设计模式:策略模式

    定义 策略模式(Strategy),是一种对象行为模式:定义一系列的算法,将可变的部分封装起来,使得它们可以相互替换,让变化的部分于独立调用它的客户而变化,不会导致调用方需要跟着修改. (这边的&qu ...

  4. 橘子学设计模式之策略模式

    策略模式 1.简介 俗话说:条条大路通罗马.在很多情况下,实现某个目标的途径不止一条,例如我们在外出 旅游时可以选择多种不同的出行方式,如骑自行车.坐汽车.坐火车或者坐飞机,可根据实 际情况(目的地. ...

  5. 设计模式之策略模式+工厂模式+模板模式结合

    设计模式之策略模式+模板模式 为什么总是学不好设计模式 从"登录功能"中发现问题. 首先我们简单的了解功能需求: 于是你开始干活了: 1.控制层代码如下,根据不同的登录方式调用不同 ...

  6. JavaScript版本的策略模式

    俗话说,条条大路通罗马.在美剧<越狱>中,主角Michael Scofield就设计了两条越狱的道路.这两条道路都可以到达靠近监狱外墙的医务室. 同样,在现实中,很多时候也有多种途径到达同 ...

  7. Java设计模式之策略模式与状态模式

    一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...

  8. 研磨设计模式之 策略模式--转

    http://www.uml.org.cn/sjms/201009092.asp 研磨设计模式之 策略模式   2010-09-09 作者:云飞龙行 来源:云飞龙行的blog   先感谢众多朋友的支持 ...

  9. 策略设计模式_设计模式之策略模式总结

    再上一篇文章<设计模式之策略模式>中,我们通过模拟鸭子项目,了解了什么是策略模式,怎么使用策略模式.本文将通过鸭子项目的学习,对策略模式进行总结. 策略模式: 分别封装行为接口,实现算法族 ...

  10. C#设计模式之策略模式

    策略模式 文章目录 策略模式 模式分类 模式产生的原因 模式类图 代码实现 策略模式总结 策略模式的优点: 策略模式的缺点: 本篇博客将介绍策略模式,策略模式用于算法的自由切换和扩展,他是使用较为广泛 ...

最新文章

  1. JavaScript(转载)
  2. 《数学之美》第31章 大数据的威力--谈谈数据的重要性
  3. [zz]正则表达式使用详解
  4. linux搭建directx环境,微軟開始在WSL 2環境中的Linux支援DirectX
  5. 听一听蚂蚁金服机器学习算法中台周俊谈共享智能技术实践:如何降低数据共享的难度?
  6. 2022年4月8日体检
  7. 计算机科学导论课后单词,计算机科学导论课后总结
  8. leetcode136 只出现一次的数字
  9. Java基础-方法(method)的应用
  10. java打包带有外部jar,Eclipse使用总结——使用Eclipse打包带源码的jar包
  11. 5.数据中台 --- 数据汇聚联通:打破企业数据孤岛
  12. Unable to run mksdcard SDK tool
  13. 应急响应-Linux入侵排查
  14. windows下的内存型下载者病毒
  15. java平均数函数_java求平均数的函数
  16. php 如何添加备案号,wordpress如何添加备案信息
  17. 【杂篇 · 电脑】买R9000P以来遇到的解决的和未解决的问题汇总
  18. WHQL认证最新申请流程
  19. 初识AS3(十)——加载外部文件进度…
  20. (转)云计算的三种模式:IaaS、PaaS和SaaS 通俗理解

热门文章

  1. DWG文件打开乱码怎么办?
  2. 2019年重大信息安全事件解读,网络信息安全值得重视(上)
  3. Google 开发者账号关联被封后怎么办
  4. MAC下安装yarn方法
  5. 计算机专业学生毕业实习周记
  6. 画板html5代码,html5教程制作简单画板代码分享
  7. rplidar.lua
  8. 【常见错误】Quartz常见错误
  9. Oracle中针对中文进行排序
  10. PyTorch安装及试用 基于Anaconda3