JS设计模式 - 策略模式

策略模式

策略模式是定义一系列的算法,把它们一个个封装起来,而且使它们能够相互替换。算法

策略模式的目的就是使算法的使用与算法分离开来。封装的算法具备必定的独立性,不会随客户端的变化而变化。设计模式

Demo

咱们实现一个计数器的加减乘除来讲明策略模式markdown

function count(type, number1, number2) {
  switch (type) {
    case 'add':
      return number1 + number2;
    case 'subtract':
      return number1 - number2;
    case 'multiply':
      return number1 * number2;
    default:
      return number1 / number2;
  }
}
// if else
function count1(type, number1, number2) {
  if (type === 'add') {
    return number1 + number2;
  } else if (type === 'subtract') {
    return number1 - number2;
  } else if (type === 'multiply') {
    return number1 * number2;
  } else {
    return number1 / number2;
  }
}
复制代码

使用策略模式app

const count = {
  add(number1, number2) {
    return number1 + number2;
  },
  subtract(number1, number2) {
    return number1 - number2;
  },
  multiply(number1, number2) {
    return number1 * number2;
  },
  divide(number1, number2) {
    return number1 / number2;
  },
};

count.add(2, 3); // 5
count.subtract(10, 3); // 7
count.multiply(2, 3); // 6
count.divide(6, 2); // 3
复制代码

场景

策略模式是一种经常使用的设计模式 例如ide

  • 表单校验的规则ui

  • 页面须要根据不一样的条件渲染不一样的按钮lua

  • 商店不一样的活动 计算价格url

  • ......spa

优势

  • 减小重复代码 策略模式利用组合、委托和多态等技术和思想,减小不少模板代码。设计

  • 扩展性 策略模式提供了对开放-封闭原则的完美支持,将算法封装在独立的策略类里面,使它们易于切换,易于理解,易于扩展。

相关文章
相关标签/搜索