JavaScript设计模式(策略模式)

策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。将不变的部分和变化的部分隔开是每个设计模式的主题,策略模式也不例外,策略模式的目的就是将算法的使用与算法的实现分离开来。

一、最初的策略模式:

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

 或者使用组合函数封装改善下代码

var performanceS = function( salary ){ 
  return salary * 4;
};
var performanceA = function( salary ){ 
  return salary * 3;
};
var performanceB = function( salary ){ 
  return salary * 2;
};
var calculateBonus = function( performanceLevel, salary ){
  if ( performanceLevel === 'S' ){ 
    return performanceS( salary );
  }
  if ( performanceLevel === 'A' ){ 
    return performanceA( salary );
  }
  if ( performanceLevel === 'B' ){ 
    return performanceB( salary );
  }
}

calculateBonus( 'A' , 10000 ); // 输出:30000

但是,这种改善非常有限,calculateBonus 函数有可能越来越庞大,而且在系统变化的时候缺乏弹性。

二、策略模式:

猜你喜欢

转载自www.cnblogs.com/angelatian/p/11771976.html