let strategies = {
add: function (num) {
return num + num;
},
multiply: function (num) {
return num * num;
},
};
let calculateBonus = function (strategy, num) {
return strategies[strategy](num);
};
console.log(calculateBonus("add", 3));
console.log(calculateBonus("multiply", 3));
class Strategies {}
class Add extends Strategies {
start(num) {
return num + num;
}
}
class Multiply extends Strategies {
start(num) {
return num * num;
}
}
class Context {
constructor(strategy) {
this.strategy = strategy;
}
start(num) {
return this.strategy.start(num);
}
}
let context = new Context(new Add());
console.log(context.start(3));
context = new Context(new Multiply());
console.log(context.start(3));
方案一:JS对象写法
方案二:传统写法