JavaScript策略模式

一、什麼是策略模式?

策略模式的定義是:定義一系列方法,把它們一個個封裝起來,並且使用它們可以相互替換。

一個基於策略模式的程序至少由兩部分組成,第一個是策略類,裏面封裝了具體的算法,並負責計算的過程;第二個部分是環境類,負責接收請求,然後將請求委託給策略來實現

策略模式,將算法的實現以及算法的使用分離開來

二、實現一個策略類

首先我們是實現一個函數,用來計算員工工資:

let calculate = function(level, salary) {
    if(level === 'S') {
        return salary*4
    }
    if(level === 'A') {
        return salary*3
    }
    if(level === 'B') {
        return salary*2
    }
}

這個函數根據員工的等級與及工資計算出員工的最終工資。

但是這個函數的設計實現並不好:

  • 過多的if-else語句
  • 缺乏彈性,如果要加入C就要深入函數內部
  • 複用性較差

改進:

// 策略類
let strategies = {
    "S": function(salary) {
        return salary*4
    },
    "A": function(salary) {
        return salary*3
    },
    "B": function(salary) {
        return salary*2
    }
}
// 環境類
let cal = function (level,salary) {
    return strategies[level](salary)
}

這裏消除了if-else語句,使得函數的性能更好,並且將算法的實現和算法的使用分離開來,增強了函數的彈性和可複用性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章