david2tdw / blog

学习记录
1 stars 1 forks source link

[Pattern] 策略模式 #144

Open david2tdw opened 4 years ago

david2tdw commented 4 years ago

策略模式

定义: 根据不同参数可以命中不同的策略.

优点:

  1. 能减少大量的 if 语句
  2. 复用性好

经典版:

const stragegy= {
  'S': function (salary) {
    return salary * 4;
  },
  'A': function (salary) {
    return salary * 3;
  },
  'B': function (salary) {
    return salary * 2;
  }
}

const calculateBonus = function (level, salary) {
  return stragegy[level](salary)
}

console.log(calculateBonus('A', 600));
console.log(calculateBonus('B', 600));

高阶函数版:

const s = function (salary) {
  return salary * 4;
}
const a = function (salary) {
  return salary * 3;
}
const  b = function (salary) {
  return salary * 2;
}

const calaculateBonus  = function (func, salary) {
  return func(salary);
}

calaculateBonus(a, 200);

策略模式

david2tdw commented 4 years ago

高阶函数:函数的参数能够接收别的函数。

const calaculateBonus  = function (func, salary) {
  return func(salary);
}

高阶函数