策略模式是一种行为设计模式,它使得你可以在运行时选择算法或行为的模式。在JavaScript中,策略模式通常用于定义一系列算法,将每个算法封装起来,并使它们可以相互替换。策略模式使得算法可以独立于使用它们的客户端变化。
// 定义策略接口(在JavaScript中通过函数实现)
function calcBonusInterface(salary) {
throw new Error('子类必须实现这个方法');
}
// 定义具体策略类
function LevelSPolicy(salary) {
return salary * 4; // 绩效S的奖金系数为4
}
function LevelAPolicy(salary) {
return salary * 3; // 绩效A的奖金系数为3
}
function LevelBPolicy(salary) {
return salary * 2; // 绩效B的奖金系数为2
}
// 上下文类
function SalaryCalculator(policy) {
this.policy = policy;
}
SalaryCalculator.prototype.setPolicy = function(policy) {
this.policy = policy;
};
SalaryCalculator.prototype.calculate = function(salary) {
return this.policy(salary);
};
// 使用示例
var calculator = new SalaryCalculator(LevelSPolicy);
console.log(calculator.calculate(10000)); // 输出 40000
calculator.setPolicy(LevelAPolicy);
console.log(calculator.calculate(10000)); // 输出 30000
if-else或switch-case语句来选择不同的算法
。在JavaScript中,策略模式通过定义一系列算法或行为,并在运行时根据需要进行切换,来提供灵活的控制
。这种模式有助于代码的组织和维护,使得各种算法或行为的更改更加独立和灵活。