一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語言 - JavaScript - JavaScript設(shè)計模式之策略模式實例

JavaScript設(shè)計模式之策略模式實例

2021-03-28 22:19JavaScript教程網(wǎng) JavaScript

這篇文章主要介紹了JavaScript設(shè)計模式之策略模式實例,本文分析了Jquery源碼并給出了自己的實現(xiàn),需要的朋友可以參考下

策略模式的意義是定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。
一個小例子就能讓我們一目了然。

回憶下jquery里的animate方法.

 

復(fù)制代碼 代碼如下:

$( div ).animate( {“left: 200px”}, 1000, ‘linear' );  //勻速運動
$( div ).animate( {“left: 200px”}, 1000, ‘cubic' );  //三次方的緩動

 

這2句代碼都是讓div在1000ms內(nèi)往右移動200個像素. linear(勻速)和cubic(三次方緩動)就是一種策略模式的封裝.

再來一個例子. 上半年我寫的dev.qplus.com, 很多頁面都會有個即時驗證的表單. 表單的每個成員都會有一些不同的驗證規(guī)則.

比如姓名框里面, 需要驗證非空,敏感詞,字符過長這幾種情況。 當(dāng)然是可以寫3個if else來解決,不過這樣寫代碼的擴展性和維護性可想而知。如果表單里面的元素多一點,需要校驗的情況多一點,加起來寫上百個if else也不是沒有可能。

所以更好的做法是把每種驗證規(guī)則都用策略模式單獨的封裝起來。需要哪種驗證的時候只需要提供這個策略的名字。就像這樣:

 

復(fù)制代碼 代碼如下:

nameInput.addValidata({
notNull: true,
dirtyWords: true,
maxLength: 30
})


而notNull,maxLength等方法只需要統(tǒng)一的返回true或者false,來表示是否通過了驗證。

復(fù)制代碼 代碼如下:
validataList = {
notNull: function( value ){
return value !== ”;
},
maxLength: function( value, maxLen ){
return value.length() > maxLen;
}
}

 

可以看到,各種驗證規(guī)則很容易被修改和相互替換。如果某天產(chǎn)品經(jīng)理建議字符過長的限制改成60個字符。那只需要0.5秒完成這次工作。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区二区视频免费 | 加勒比京东热 | 久久免费国产视频 | 久久久无码精品亚洲A片猫咪 | 99热在线精品播放 | 久久精品一区二区三区资源网 | 四虎永久 | 午夜伦理:伦理片 | 日本69sex护士www | 亚洲嫩模吧粉嫩粉嫩冒白浆 | 动漫美女被吸乳 | avove全部视频在线观看 | 九九大香尹人视频免费 | 日韩视频一区二区三区 | 亚洲AV无码专区国产乱码网站 | 我要色色网 | 色综合 成人 | 高h射尿| 学生小泬无遮挡女HD | 91久久国产青草亚洲 | www.色.con | 小SAO货边洗澡边CAO你动漫 | 亚洲成人在线播放 | 九九精品久久 | 免费港剧在线观看港剧 | 欧美a一级片 | 久久精品成人免费看 | 欧美美女一级片 | 手机在线观看网站免费视频 | 精品日本三级在线观看视频 | 国产精品美女福利视频免费专区 | 亚洲天堂视频在线观看免费 | 人人揉人人爽五月天视频 | 叛佛 作者满栀小说免费阅读 | 国产自在线拍 | 青草网在线观看 | 动态图啪啪120秒免费看 | 性xxxxxxx18老师 | 欧美在线视频免费播放 | 羞羞在线观看 | 日日骑夜夜骑 |