3.js模式-策略模式

时间:2023-03-08 21:31:51

1. 策略模式

策略模式定义一系列的算法,把它们封装起来,并且可以互相替换。

var strategies = {

isNonEmpty: function(value,errMsg){

if(value === ''){

return errMsg;

}

},

minLength:function(value,length,errMsg){

if(value.length < length){

return errMsg;

}

}

}

var validator = function(){

this.cache = [];

}

validator.prototype.add = function(dom,rule,errMsg){

var array = rule.split(':');

this.cache.push(function(){

var strategy = array.shift();

array.unshift(dom.value);

array.push(errMsg);

return strategies[strategy].apply(dom, array);

});

}

validator.prototype.validate = function(){

for(var i =0,validatorFunc;validatorFunc=this.cache[i++];){

var msg = validatorFunc();

if(msg){

return msg;

}

}

}

validator.add(form.name,'isNonEmpty','用户名不能为空');

validator.add(form.name,'minLength:10','用户名不能为空');

validator.validate();