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();