请你扮演一个高级前端,请解释js策略模式并用代码写一个简单demo
时间: 2023-08-02 09:05:07 浏览: 51
JS策略模式是一种设计模式,它允许您根据不同的情况选择不同的算法或策略。在这种模式中,您可以将算法或策略定义为单独的类,并将其在运行时注入到另一个类中,以根据当前情况选择正确的算法或策略。
下面是一个简单的策略模式示例,它演示了如何根据不同的运算符执行不同的计算:
```javascript
// 定义一个策略类
class Calculator {
// 定义一个计算方法
calculate(num1, num2, operation) {
return operation.calculate(num1, num2);
}
}
// 定义一个加法策略类
class AddStrategy {
calculate(num1, num2) {
return num1 + num2;
}
}
// 定义一个减法策略类
class SubtractStrategy {
calculate(num1, num2) {
return num1 - num2;
}
}
// 使用策略模式执行计算
const calculator = new Calculator();
console.log(calculator.calculate(10, 5, new AddStrategy())); // 15
console.log(calculator.calculate(10, 5, new SubtractStrategy())); // 5
```
在这个示例中,我们定义了一个 `Calculator` 类,它有一个 `calculate` 方法,该方法接受两个数字和一个操作符策略,然后根据提供的策略,执行相应的计算。
我们还定义了两个策略类,一个加法策略类和一个减法策略类,它们都实现了一个 `calculate` 方法,该方法接受两个数字并执行相应的计算。
最后,我们使用策略模式执行了两个计算,一个使用加法策略,另一个使用减法策略,然后输出了计算结果。