JavaScript 设计模式——策略模式
1. 什么是策略模式
策略模式 是一种行为设计模式,能让我们定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。
2. 策略模式的实现
试想这样一个场景,在实现编译器中的四则运算时,将符号(加减乘除)和两个参与运算的数字传入函数中,返回对应的结果
最初代码:
const calc = function(type, num1, num2) {
if(type === '+'){
return num1 + num2
}
if(type === '-') {
return num1 - num2
}
if(type === '*'){
return num1 * num2;
}
if(type === '/'){
return num1 / num2;
}
}
calc('+', 1, 2); // 3
calc('-', 3, 1); // 2
calc 函数缺乏弹性。如果未来又有引入了取模运算,那必须深入到 calc 函数的内部实现,这违反了开放-封闭原则。
下面我们使用策略模式重构这段代码。一个基于策略模式的程序至少包含两部分:1. 一组策略类,封装了具体的算法与计算过程;2. 环境类 Context,接收客户的请求,将请求委托给某一个策略类。
// 一组策略类
const calcSum = function() {
}
calcSum.prototype.calc = function(num1, num2) {