當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS设计模式(2)策略模式
生活随笔
收集整理的這篇文章主要介紹了
JS设计模式(2)策略模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是策略模式?
定義:根據不同參數可以命中不同的策略
主要解決:在有多種算法相似的情況下,使用 if...else 所帶來的復雜和難以維護。
何時使用:有許多種情況,而區分它們的只是他們直接的行為。
如何解決:通過一個hash對象,來映射不同的策略。
優點:?1、算法可以自由切換。 2、避免使用多重條件判斷。 3、擴展性、復用性良好。
缺點:?1、策略類會增多。 2、所有策略類都需要對外暴露。
使用場景:?1.需要動態地根據行為改變運行方法。2.為了減少代碼,同時為了讓代碼具有更好的可讀性。3.需要對策略進行統一管理。
?
JavaScript中的策略模式
觀察如下獲取年終獎的 demo,根據不同的參數(level)獲得不同策略方法(規則),這是策略模式在 JS 比較經典的運用之一。
const strategy = {'S': function(salary) {return salary * 4},'A': function(salary) {return salary * 3},'B': function(salary) {return salary * 2} }const calculateBonus = function(level, salary) {return strategy[level](salary) }calculateBonus('A', 10000) // 30000在函數是一等公民的 JS 中,策略模式的使用常常隱藏在高階函數中,稍微變換下上述 demo 的形式如下,可以發現我們平時已經在使用它了,恭喜我們又掌握了一種設計模式。
const S = function(salary) {return salary * 4 }const A = function(salary) {return salary * 3 }const B = function(salary) {return salary * 2 }const calculateBonus = function(func, salary) {return func(salary) }calculateBonus(A, 10000) // 30000?
更多專業前端知識,請上 【猿2048】www.mk2048.com
總結
以上是生活随笔為你收集整理的JS设计模式(2)策略模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: this到底指向哪里
- 下一篇: JS 判断是否是手机端并跳转操作