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

優勢

  • 減小重複代碼 策略模式利用組合、委託和多態等技術和思想,減小不少模板代碼。設計

  • 擴展性 策略模式提供了對開放-封閉原則的完美支持,將算法封裝在獨立的策略類裏面,使它們易於切換,易於理解,易於擴展。

相關文章
相關標籤/搜索