code设计模式-策略模式

xiaoxiao2021-02-28  117


1.定义:定义一系列算法,把它们一个一个封装起来,并且使它们可以相互替换。 策略模式可以用来减少if-else 语句的使用。


2.实例:个人年终奖计算,奖金金额与个人薪资和绩效等级有关。

原始实现方式 var calculateBonus = function(level,salary){ if(level === 'A++'){ return 4*salary; } if(level === 'A+'){ return 3*salary; } if(level === 'A'){ return 2*salary; } }; calculateBonus('A++',50000); calculateBonus('A+',20000);

可以看出,代码中含有很多if-else语句,可扩展性差(一旦算法改变就必须修改内部实现),复用性差(如果其他地方需要重用奖金计算算法就得整个函数拷贝)。

策略模式 var strategies = { 'A++':function(salary){ return 4*salary; }, 'A+':function(salary){ return 3*salary; }, 'A':function(salary){ return 2*salary; } }; var calculateBonus = function(level,salary){ return strategies[level](salary); } calculateBonus('A++',50000); calculateBonus('A+',20000);
转载请注明原文地址: https://www.6miu.com/read-37737.html

最新回复(0)