14. 策略模式(Strategy)
14. 策略模式(Strategy)
问题:算法有多种变体,不想用一堆 if-else 写死。
核心:把每种算法封装成独立策略,运行时可替换。
const strategies = {
add: (a, b) => a + b,
subtract: (a, b) => a - b,
multiply: (a, b) => a * b,
};
function calculate(op, a, b) {
return strategies[op](a, b);
}
console.log(calculate('add', 3, 5)); // 8
console.log(calculate('multiply', 3, 5)); // 15package strategy
type Strategy func(a, b int) int
var strategies = map[string]Strategy{
"add": func(a, b int) int { return a + b },
"subtract": func(a, b int) int { return a - b },
"multiply": func(a, b int) int { return a * b },
}
func Calculate(op string, a, b int) int {
return strategies[op](a, b)
}