// 原始写法
function getSalary(type, salary) {
switch (type) {
case "A":
return salary * 3;
case "B":
return salary * 2;
case "C":
return salary;
}
}
console.log(getSalary("A", 1000));
/**
* 策略模式的主要作用就是 把算法的使用和算法的定义分离开
*/
class Strategy {
constructor() {
this.strategies = {};
}
addStrategy(type, fn) {
this.strategies[type] = fn;
}
useStrategy(type, salary) {
return this.strategies[type](salary);
}
}
/**
* 绩效为 A 年终奖=工资 x 3
* 绩效为 B 年终奖=工资 x 2
* 绩效为 C 年终奖=工资 x 1
*/
const sta = new Strategy();
sta.addStrategy("A", (salary) => {
return salary * 3;
});
sta.addStrategy("B", (salary) => {
return salary * 2;
});
sta.addStrategy("C", (salary) => {
return salary;
});
console.log(sta.useStrategy("A", 10000));
JS 设计模式之策略模式
最新推荐文章于 2024-10-09 11:19:11 发布