JavaScript設(shè)計模式之策略模式實例
策略模式的意義是定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。
一個小例子就能讓我們一目了然。
回憶下jquery里的animate方法.
$( div ).animate( {“l(fā)eft: 200px”}, 1000, ‘linear' ); //勻速運動
$( div ).animate( {“l(fā)eft: 200px”}, 1000, ‘cubic' ); //三次方的緩動
這2句代碼都是讓div在1000ms內(nèi)往右移動200個像素. linear(勻速)和cubic(三次方緩動)就是一種策略模式的封裝.
再來一個例子. 上半年我寫的dev.qplus.com, 很多頁面都會有個即時驗證的表單. 表單的每個成員都會有一些不同的驗證規(guī)則.
比如姓名框里面, 需要驗證非空,敏感詞,字符過長這幾種情況。 當然是可以寫3個if else來解決,不過這樣寫代碼的擴展性和維護性可想而知。如果表單里面的元素多一點,需要校驗的情況多一點,加起來寫上百個if else也不是沒有可能。
所以更好的做法是把每種驗證規(guī)則都用策略模式單獨的封裝起來。需要哪種驗證的時候只需要提供這個策略的名字。就像這樣:
nameInput.addValidata({
notNull: true,
dirtyWords: true,
maxLength: 30
})
而notNull,maxLength等方法只需要統(tǒng)一的返回true或者false,來表示是否通過了驗證。
notNull: function( value ){
return value !== ”;
},
maxLength: function( value, maxLen ){
return value.length() > maxLen;
}
}
可以看到,各種驗證規(guī)則很容易被修改和相互替換。如果某天產(chǎn)品經(jīng)理建議字符過長的限制改成60個字符。那只需要0.5秒完成這次工作。
- js單例模式的兩種方案
- JS實現(xiàn)單例模式的6種方案匯總
- javascript 單例模式演示代碼 javascript面向?qū)ο缶幊?/a>
- JavaScript的單例模式 (singleton in Javascript)
- 輕松掌握JavaScript單例模式
- [js高手之路]單例模式實現(xiàn)模態(tài)框的示例
- JavaScript設(shè)計模式之策略模式詳解
- javascript設(shè)計模式--策略模式之輸入驗證
- 學(xué)習(xí)JavaScript設(shè)計模式之策略模式
- 學(xué)習(xí)JavaScript設(shè)計模式(策略模式)
- javascript單例模式與策略模式實例詳解
相關(guān)文章
每周一練 之 數(shù)據(jù)結(jié)構(gòu)與算法(Stack)
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)與算法(Stack),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04用JS實現(xiàn)網(wǎng)頁元素陰影效果的研究總結(jié)
用JS實現(xiàn)網(wǎng)頁元素陰影效果的研究總結(jié)...2007-08-08JavaScript 中定義函數(shù)用 var foo = function () {} 和 function foo()區(qū)
這篇文章主要介紹了JavaScript 中定義函數(shù)用 var foo = function () {} 和 function foo()區(qū)別介紹,需要的朋友可以參考下2018-03-03javascript 最常用的10個自定義函數(shù)[推薦]
如果不使用類庫或者沒有自己的類庫,儲備一些常用函數(shù)總是有好處的。2009-12-12