亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

學習JavaScript設計模式之策略模式

2019-11-20 10:49:06
字體:
來源:轉載
供稿:網友

把不變的部分和變化的部分隔開是每個設計模式的主題。

  • 條條大路通羅馬。我們經常會遇到解決一件事情有多種方案,比如壓縮文件,我們可以使用zip算法、也可以使用gzip算法。其靈活多樣,我們可以采用策略模式解決。

一、定義

定義一系列的算法,把它們一個個封裝起來,并且使它們可以相互替換。
基于策略類模式的程序至少由兩部分組成。第一個部分是一組策略類,策略類封裝了具體的算法,并負責具體的計算過程。第二個部分是環境類Context,Context接收客戶的請求,隨后把請求委托給某一個策略類。

二、示例

計算獎金??冃镾的發放4倍工資,績效為A的發放3倍工資,績效為B的發放2倍工資。

var strategies = { "S": function(salary) {  return salary * 4; }, "A": function(salary) {  return salary * 3; }, "B": function(salary) {  return salary * 2; }};// 接收請求var calculateBonus = function(level, salary) { return strategies[level](salary);};// 測試console.log(calculateBonus("S", 20000));console.log(calculateBonus("A", 20000));console.log(calculateBonus("B", 20000));

三、延伸:表單驗證

/* 校驗策略對象 */var validateStrategies = { isEmpty: function (val, errorMsg) {  if (!val) {   return errorMsg;  } }, isURL: function (val, errorMsg) {  if (!new RegExp("^(http://////|https://////)?([//w//-]+//.)+[//w//-]+(///[//w//-//.///?//@//%//!//&=//+//~//://#//;//,]*)?$").test(val)) {   return errorMsg;  } }, isEmail: function (val, errorMsg) {  if (!new RegExp('//w+((-//w+)|(//.//w+))*//@[A-Za-z0-9]+((//.|-)[A-Za-z0-9]+)*//.[A-Za-z0-9]+').test(val)) {   return errorMsg;  } }, isMaxLength: function (val, length, errorMsg) {  if (val.length > length) {   return errorMsg;  } }, isMinLength: function (val, length, errorMsg) {  if (val.length < length) {   return errorMsg;  } }};/* validator類 */var validator = function () { // 緩存驗證策略 this.cache = [];};/** * 添加要驗證的策略 * @param dom  要驗證的dom元素 * @param rules  驗證規則 */validator.prototype.add = function (dom, rules) { var self = this; for (var i = 0, rule; rule = rules[i++];) {  (function (rule) {   var strategyAry = rule.strategy.split(":");  // ["isMaxLength", "10"]   var errorMsg = rule.errorMsg;     // "內容長度不能超過10"   self.cache.push(function () {    var strategy = strategyAry.shift();   // "isMaxLength"    strategyAry.unshift(dom.value);    // ["1@qq", "10"]    strategyAry.push(errorMsg);     // ["1@qq", "10", "內容長度不能超過10"]    return validateStrategies[strategy].apply(dom, strategyAry);   });  })(rule); }};/* 開始校驗 */validator.prototype.start = function () { for (var i = 0, validateFunc; validateFunc = this.cache[i++];) {  var errorMsg = validateFunc();  if (errorMsg) {   return errorMsg;  } }};// 測試<label for="email">郵箱:</label><input type="text" name="email" value="1@qq">var validatorInstance = new validator();validatorInstance.add( document.getElementsByName("email")[0],  [{  strategy: "isEmpty",  errorMsg: "內容不能為空" },{  strategy: "isMaxLength:10",  errorMsg: "內容長度不能超過10" },{  strategy: "isEmail",  errorMsg: "email格式不對" }]);errorMsg = validatorInstance.start();

希望本文所述對大家學習javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产欧美一区二区三区久久| 亚洲а∨天堂久久精品喷水| 久久久久久中文| 欧美老女人在线视频| 亚洲欧美在线一区| 欧美黄色免费网站| 国产精品久久一区主播| 奇米四色中文综合久久| 精品视频在线播放色网色视频| 欧美亚洲伦理www| 欧美在线视频在线播放完整版免费观看| 亚洲国产精品久久精品怡红院| 久久综合色影院| 亚洲欧美制服丝袜| 国产日韩欧美一二三区| 精品国产区一区二区三区在线观看| 成人国产精品av| 精品久久香蕉国产线看观看亚洲| 免费av在线一区| 欧美孕妇与黑人孕交| 97精品国产aⅴ7777| 国产日产欧美精品| 亚洲一区二区免费在线| 亚洲日韩中文字幕| 国产狼人综合免费视频| 国语自产精品视频在免费| 91在线观看免费高清完整版在线观看| 亚洲综合视频1区| 成人乱人伦精品视频在线观看| 91精品国产99久久久久久| 亚洲日本欧美日韩高观看| 色偷偷88888欧美精品久久久| 一个色综合导航| 国内精品久久影院| 97人人爽人人喊人人模波多| 国产精品99久久久久久www| 中文字幕精品www乱入免费视频| 高清一区二区三区日本久| 亚洲最大av网站| 国外成人在线播放| 国产精品爱久久久久久久| 欧美亚洲成人免费| 九九久久精品一区| 亚洲国产精品一区二区久| 欧美性视频精品| 亚洲大胆人体av| 日韩福利伦理影院免费| 伊人亚洲福利一区二区三区| 亚洲qvod图片区电影| 亚洲欧美日韩国产中文| 国产精品一区二区性色av| 亚洲成人精品久久久| 亚洲成成品网站| 久久综合九色九九| 国产精品对白刺激| 久久久精品欧美| 国产激情久久久| 欧美一级淫片videoshd| 精品国产一区二区三区久久| 亚洲激情在线视频| 26uuu亚洲伊人春色| 亚洲人午夜精品免费| 成人黄色午夜影院| 日韩精品免费一线在线观看| 夜夜嗨av一区二区三区免费区| 色综合久久悠悠| 久久久久日韩精品久久久男男| 亚洲国产小视频| 国产精品成人一区| 久久久噜噜噜久久中文字免| 亚洲福利在线播放| 欧美日韩亚洲高清| 精品视频一区在线视频| 国内精品美女av在线播放| 日韩国产欧美精品在线| 亚洲a一级视频| 国产日韩欧美在线看| 亚洲精品日韩激情在线电影| 久久综合电影一区| 亚洲精品狠狠操| 一区国产精品视频| 国产精品777| 久久久精品久久久久| 久久精品视频播放| 亚洲成人网在线观看| 欧美日韩国产精品| 国产日韩精品电影| 久久91亚洲精品中文字幕| 欧美中文字幕在线视频| 欧美一区二粉嫩精品国产一线天| 国产精品日韩在线| 欧美视频裸体精品| 国产精品成人在线| 久久亚洲精品毛片| 亚洲人成电影网站色…| 亚洲三级 欧美三级| 亚洲无限乱码一二三四麻| 国产精品色婷婷视频| 日韩精品丝袜在线| 国产成人精品一区二区三区| 奇门遁甲1982国语版免费观看高清| 国产精品9999| 欧美电影免费观看电视剧大全| 在线播放国产一区二区三区| 久久久久国产一区二区三区| 91夜夜未满十八勿入爽爽影院| 欧美大片免费观看在线观看网站推荐| 中文字幕在线看视频国产欧美| 日韩一区二区欧美| 黄网站色欧美视频| 亚洲欧美三级伦理| 欧美日韩成人在线观看| 欧美人成在线视频| 亚洲变态欧美另类捆绑| 国产精品一区二区三区久久久| 国产精品久久久久久久久免费看| 国产精品极品美女在线观看免费| 亚洲bt欧美bt日本bt| 国产精品96久久久久久| 日韩电影中文 亚洲精品乱码| 欧美一级电影在线| 成人激情在线播放| 欧美激情国产高清| 尤物yw午夜国产精品视频明星| 欧美日韩高清区| 精品呦交小u女在线| 亚洲天堂网在线观看| 欧美激情乱人伦一区| 免费av在线一区| 久久久久久久久电影| 国产精品免费看久久久香蕉| 中文字幕精品国产| 久久精品视频在线播放| 色噜噜亚洲精品中文字幕| 在线观看国产欧美| 亚洲美女av在线播放| 夜夜嗨av色一区二区不卡| 欧美日韩免费在线| 色婷婷av一区二区三区久久| 97视频在线观看播放| 韩国三级电影久久久久久| 日韩免费在线观看视频| 欧美一级大片视频| 精品久久久久久久久国产字幕| 亚洲精品综合精品自拍| 国产精品一二三视频| 91国产视频在线播放| 成人激情视频网| 日本精品久久中文字幕佐佐木| 亚洲激情自拍图| 欧美孕妇性xx| 久久久久久久色| 成人黄色影片在线| 久久亚洲精品一区| 日韩不卡中文字幕| 91精品在线影院| 中文字幕少妇一区二区三区| 日韩高清人体午夜| 亚洲大胆人体av| 午夜精品福利在线观看| 国产91精品黑色丝袜高跟鞋| 国产欧美日韩精品丝袜高跟鞋| 欧美巨大黑人极品精男| 亚洲区免费影片|