JavaScript之策略模式
来源:互联网 发布:galgame汉化软件 编辑:程序博客网 时间:2024/06/05 01:13
策略模式:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换
举个栗子
假设我们要实现一个计算个人奖金数额的函数:
var calcBonus = function (level, salary) { if (level === 'A') { return salary * 4; } if (level === 'B') { return salary * 3; } if (level === 'C') { return salary * 2; } } console.log(calcBonus('A', 1000)); // 输出 4000 console.log(calcBonus('B', 1000)); // 输出 4000
这段代码的缺点显然易见:
- 函数体庞大,包含大量的if-else
- 缺乏弹性,如果想增加一种’D’等级,或者把绩效A的奖金系数变成5将会非常麻烦,要深入函数内部改变函数体。
- 代码复用性差,如果想在程序的其他部分想用这些计算奖金的算法我们就只有复制粘贴啦。
使用策略模式重构代码
var strategies = { 'A': function (salary) { return salary * 4; }, 'B': function () { return salary * 3; }, 'C': function () { return salary * 2; } } var calcBonus = function (leve, salary) { return strategies[level](salary); } console.log(calcBonus('A', 2000)); //输出 8000
策略模式优缺点
优点:
- 利用组合,委托和多态等技术和思想,可以有效避免多重条件语句
- 提供了对开闭原则的支持,将算法独立封装在strategies里面。
- 模式中的算法可以复用在多个地方。
缺点:
- 增加了大量的策略对象
- 要是用策略模式就要了解所有策略的实现
- 暴漏了算法
阅读全文
0 0
- JavaScript之策略模式
- javascript设计模式之策略(Strategy)模式
- JavaScript设计模式之策略模式
- javascript设计模式实践之策略模式--输入验证
- 初识设计模式之策略模式(javascript描述)
- javascript设计模式之二——策略模式
- javascript策略模式
- javascript策略模式
- JavaScript与策略模式
- JavaScript策略模式
- JavaScript设计模式--策略模式
- JavaScript设计模式----策略模式
- javascript 设计模式-策略模式
- JavaScript版本的策略模式
- javascript策略模式(strategy)
- 策略模式之我见
- 策略模式之我见
- 策略模式----之Comparator
- Python求正态分布曲线下面积
- WebGL之旅(四)简单变换
- 【剑指offer】面试题12:矩阵中的路径
- redis基础和配置
- hdu2389 Rain on your Parade【二分图最大匹配-HK算法】
- JavaScript之策略模式
- 刘汝佳《算法竞赛入门经典(第二版)》习题(八)
- oracle 序列问题
- struts2的字段校验类型和struts2实现文件上传
- 【JavaScript的赋值操作符】
- ViewPager解析
- git学习心得1---充分掌握fetch,merge,push
- python_sutdy_note1-1
- 我的linux学习之路---第一篇