使用策略模式计算奖金-清华大学计算机考研经验贴.

时间:2024-07-15 10:05:47
【文件属性】:

文件名称:使用策略模式计算奖金-清华大学计算机考研经验贴.

文件大小:8.5MB

文件格式:PDF

更新时间:2024-07-15 10:05:47

javasc

5.1 使用策略模式计算奖金 策略模式有着广泛的应用。本节我们就以年终奖的计算为例进行介绍。 很多公司的年终奖是根据员工的工资基数和年底绩效情况来发放的。例如,绩效为 S 的人年 终奖有 4 倍工资,绩效为 A 的人年终奖有 3 倍工资,而绩效为 B 的人年终奖是 2 倍工资。假设财 务部要求我们提供一段代码,来方便他们计算员工的年终奖。 1. 最初的代码实现 我们可以编写一个名为 calculateBonus 的函数来计算每个人的奖金数额。很显然, calculateBonus 函数要正确工作,就需要接收两个参数:员工的工资数额和他的绩效考核等级。 代码如下: var calculateBonus = function( performanceLevel, salary ){ if ( performanceLevel === 'S' ){ return salary * 4; } if ( performanceLevel === 'A' ){ return salary * 3; } if ( performanceLevel === 'B' ){ return salary * 2; } }; calculateBonus( 'B', 20000 ); // 输出:40000 calculateBonus( 'S', 6000 ); // 输出:24000 可以发现,这段代码十分简单,但是存在着显而易见的缺点。  calculateBonus 函数比较庞大,包含了很多 if-else 语句,这些语句需要覆盖所有的逻辑 分支。  calculateBonus 函数缺乏弹性,如果增加了一种新的绩效等级 C,或者想把绩效 S 的奖金 系数改为 5,那我们必须深入 calculateBonus 函数的内部实现,这是违反开放封闭原则的。  算法的复用性差,如果在程序的其他地方需要重用这些计算奖金的算法呢?我们的选择 只有复制和粘贴。 因此,我们需要重构这段代码。 2. 使用组合函数重构代码 一般 容易想到的办法就是使用组合函数来重构代码,我们把各种算法封装到一个个的小函 数里面,这些小函数有着良好的命名,可以一目了然地知道它对应着哪种算法,它们也可以被复 图灵社区会员 balabala233 专享 尊重版权


网友评论