摘要:策略模式總結什么是策略模式策略模式的定義是定義一系列的算法,把他們獨立封裝起來,并且可以相互替換。策略模式的使用如果策略模式僅僅是用來封裝算法,可能有點小才大用了。原文鏈接設計模式策略模式上一篇設計模式單例模式
javascript策略模式總結
1.什么是策略模式?
策略模式的定義是:定義一系列的算法,把他們獨立封裝起來,并且可以相互替換。
例如我們需要寫一段代碼來計算員工的獎金。當績效為a時,獎金為工資的5倍,績效為b時,獎金為工資的3倍,績效為c時,獎金為工資的1.5倍:
var strategy = { "a":function(salary){ return salary*5; }, "b":function(salary){ return salary*3; }, "c":function(salary){ return salary*1.5; } }; var calculate = function(levle,salary){ return strategy[levle](salary); } //a級獎金 calculate("a",15000);
上面例子中,各種績效對應著不同的算法,因此把他們封裝在strategy里。calculate負責接受請求,然后把請求委托給指定的
策略類。這種實現方式,就是策略模式。
2.策略模式的優勢
看回上面的例子,具體的算法和接受請求的函數是相互獨立的,當我們需要添加新的等級d時,只需要在strategy中添加相應的算法就可以了,不需要修改到calculate,十分的靈活。
3.策略模式的使用
如果策略模式僅僅是用來封裝算法,可能有點小才大用了。在實際開發中,可以用來封裝一系列的業務規則,并且靈活的調用它們。
例如在表單驗證中,就常常會使用到策略模式。
var strategy = { isNotEmpty:function(val,errorMsg){ //不為空 if(val === ""){ return errorMsg; } } isMobile:function(val,errorMsg){ //手機號 if(!/^1[3|5|8][0-9]{9}$/.test(val)){ return errorMsg; } } } //實現validator,負責接收請求。 var Validator = function(){ this.cache = []; }; Validator.protype.add = function(dom,rule,errorMsg){ this.cache.push(function(){ return strategy[rule](dom.value,errorMsg); }) }; Validator.protype.start = function(){ var len = this.cache.length; for(var i = 0 ; i> 使用策略模式之后,我們可以用過配置strategy來添加驗證規則,可以很好的進行復用,避免了很多條件選擇語句和代碼的復制粘貼。
原文鏈接:javascript設計模式--策略模式
上一篇:javascript設計模式--單例模式
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/50976.html
摘要:實際上在這種將函數作為一等對象的語言里,策略模式已經融入到了語言本身當中,我們經常使用高階函數來封裝不同的行為,并且把它傳遞到另一個函數中。 聲明:這個系列為閱讀《JavaScript設計模式與開發實踐》 ----曾探@著一書的讀書筆記 1.策略模式的定義 將不變的部分和變化的部分隔開是每個設計模式的主題。 定義一系列的算法,把它們一個個封裝起來,并且使它們可以相互替換。 2.策略模式...
摘要:策略模式實現的也是類似的場景。第二個部分是環境類不變,接收客戶的請求,隨后把請求委托給某一個策略類。參考文章設計模式設計模式與開發實踐設計模式系統講解與應用本文首發,期待作者以樂之名本文原創,有不當的地方歡迎指出。 showImg(https://segmentfault.com/img/bVbugi7?w=800&h=600); 策略模式:定義一系列的算法,把它們一個個封裝起來,并且...
摘要:本系列為設計模式與開發實踐作者曾探學習總結,如想深入了解,請支持作者原版策略模式策略模式的定義定義一系列的算法,把它們一個個封裝起來,并且使它們可以互相替換。 本系列為《JavaScript設計模式與開發實踐》(作者:曾探)學習總結,如想深入了解,請支持作者原版 策略模式 策略模式的定義:定義一系列的算法,把它們一個個封裝起來,并且使它們可以互相替換。 舉個形象的例子,使用策略模式計算...
摘要:策略模式可以避免代碼中的多重判斷條件。策略模式在程序中或多或少的增加了策略類。此文僅記錄本人閱讀設計模式與開發實踐這個本時的感受,感謝作者曾探寫出這么好的一本書。設計模式中很重要的一點就是將不變和變分離出來。參考設計模式與開發實踐曾探 策略模式的定義是:定義一系列的算法,把它們一個個封裝起來,并且是它們可以相互替換。 策略模式可以避免代碼中的多重判斷條件。 策略模式很好的體現了開放-...
摘要:設計模式與開發實踐讀書筆記。策略模式可以有效避免多重條件選擇語句。當然,策略模式也有一些缺點增加了許多策略類或者策略對象。要使用策略模式,必須了解所有的,違反了最少知識原則。至此,回家咯附設計模式之發布訂閱模式觀察者模式 《JavaScript設計模式與開發實踐》讀書筆記。這本書挺好的,推薦。 俗話說,條條大路通羅馬。在現實生活中,我們可以采用很多方法實現同一個目標。比如我們先定個小目...
閱讀 472·2021-11-22 12:05
閱讀 1532·2021-11-17 09:33
閱讀 3579·2021-11-11 16:54
閱讀 2659·2021-10-14 09:49
閱讀 4023·2021-09-06 15:01
閱讀 1821·2019-08-29 17:23
閱讀 693·2019-08-29 14:09
閱讀 712·2019-08-29 12:28