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)); // 15
package 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)
}