国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript設計模式之策略模式實例

2019-11-20 14:03:38
字體:
來源:轉載
供稿:網友

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

回憶下jquery里的animate方法.

復制代碼 代碼如下:

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

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

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

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

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

復制代碼 代碼如下:

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

而notNull,maxLength等方法只需要統一的返回true或者false,來表示是否通過了驗證。
復制代碼 代碼如下:
validataList = {
notNull: function( value ){
return value !== ”;
},
maxLength: function( value, maxLen ){
return value.length() > maxLen;
}
}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德令哈市| 阳江市| 五原县| 横山县| 长汀县| 涡阳县| 穆棱市| 磴口县| 理塘县| 泊头市| 长春市| 南陵县| 广州市| 定襄县| 乐安县| 宁化县| 桦甸市| 新津县| 新巴尔虎右旗| 梁平县| 滦南县| 翼城县| 北碚区| 峨边| 吕梁市| 岳阳市| 海丰县| 阿坝县| 疏勒县| 斗六市| 玉溪市| 曲靖市| 洪江市| 即墨市| 霍林郭勒市| 富裕县| 宁津县| 秦皇岛市| 秦安县| 津南区| 临汾市|