策略模式 js設計模式與開發實踐 7

2021-08-08 02:25:36 字數 696 閱讀 3162

// 根據表現水平,來決定年終獎

var calculatebonus=function

(performancelevel,salary)

if(performancelevel==="a")

if(performancelevel==="b")

}console.log(calculatebonus("b", 20000));

console.log(calculatebonus("s", 6000));

calculatebonus函式比較龐大,包含了很多if-else語句;

缺乏彈性,如果增加了一種新的績效等級c,或者想把績效s的將近係數改為5,那就需要深入calculatebonus的內如實現,但這樣違法開放-封閉原則;

所以可以按照以下來重構**:

var strategies=,

"a":function

(salary),

"b":function

(salary)

}var calculatebonus=function

(level,salary)

console.log(calculatebonus("s", 2000));

console.log(calculatebonus("b", 10000));

JS 設計模式 策略模式

策略模式指的是定義一系列的演算法,把它們乙個個封裝起來。將不變的部分和變化的部分隔開是每個設計模式的主題,策略模式也不例外,策略模式的目的就是將演算法的使用與演算法的實現分離開來。可以很好的替換if else混亂的 var strategies a function salary b functio...

JS設計模式 策略模式

乙個根據等級計算獎金的例子。var stratagies a function salary b function salary var calculatebonus function level,salary console.log calculatebonus s 20000 console.l...

js 設計模式 策略模式

定義 將定義的一組演算法封裝起來,使其相互之間可以替換。封裝的演算法具有一定的獨立性,不會隨客戶端的變化而變化 廢話不多說,先來個例子 例如要寫乙個計算兩個數加減乘除的方法,會有人這麼寫 countnum type,num1,num2 else if type subtract else if ty...