第二章 --- 关于Javascript 设计模式 之 策略模式

这一章节里面,我们会主要的针对JavaScript中的策略模式进行理解和学习

一、定义

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

(这样的大的定义纲领,真的不好理解,特别是对于初学者来说)

那么我们就直接来看看代码

二、使用Javascript 中的一般方法来实现 根据每一位员工的年底业绩考核,来核算年终奖的需求。

1、我们还是来用我们最为熟悉的 JS 代码来实现这个功能
var calculateBonus = function(salary,perLevel){
	if( perLevel === 'S'){
		return salary * 4 ; 
	}

	if(perLevel === 'A'){
		return salary * 3 ;
	}

	if(perLevel === 'B'){
		return salary * 2;
	}
}

var result = calculateBonus(10000,'S');

console.log(result); // 40000 ;
#### 思考,这样做有什么不好的地方呢?

结果是显而易见的: 
1、 当我们的评选等级。越来越多的时候,我们的calculateBonus  函数就会越来越大,而且乱
2、我们的calculateBonus 函数 缺乏弹性,如果我们新增一种或者 10 中评选方案的话,那么我们必须深入的改变 我们的calculateBonus  函数
3、算法的 复用性差,如果在别的地方需要 这个 奖金的算法的时候,我们只有复制这段代码了。

三、使用Javascript 中的策略模式来实现 根据每一位员工的年底业绩考核,来核算年终奖的需求。

var methods = {
	S: function(salary){
		return salary * 4 ;
	} ,

	A: function(salary){
		return salary * 3 ;
	},
	
	B: function(salary){
		return salary * 2 ;
	},

	C: function(salary){
		return salary * 1 ;
	}  
}

var calculateBonus = function( perLevel ,salary){
	return methods[perLevel](salary);
}

var xiao = calculateBonus('S',10000);
console.log(xiao);  //40000
原文地址:https://www.cnblogs.com/erbingbing/p/5592627.html