JavaScript设计模式之策略模式

策略模式

策略模式支持运行时选择算法,客户端只需要一个接口,可以根据不同的数据和业务需求,接口内部会选择不同的算法去适应。

validator = {  
    types:{},//所有检查方法
    messages:[],//错误信息数组
    config:{},//需要验证的方法集
    validate:function (data) {  //验证方法
        var I,type,msg,checker,result_ok;

        for(I in data){  
          if(data.hasOwnProperty(i)){  
              type = this.config[I];
              checker = this.types[type];

              if(!type){
                  //在配置的验证需求中未找到相应的验证方法,so无需验证跳出循环,继续下一个
                  continue;
              }
              if(!checker){
                  //在验证方法集中没有找到验证处理方法
                  throw{
                      name:'ValidationError',
                      message:'No handler to validate type' + type;
                  }
              }

              result_ok = checker.validate(data[I]);
                if(!result_ok){  
                  //有错误
                  msg = 'Invalid value for *' + I + '*,' + checker.instructions;
                  this.messages.push(msg);
                }
            }
        }
        return this.hasErrors();
    },  

  //helper program
  hasErrors: function () {  
      return this.messages.length !== 0;
    }
};

//配置需要验证方法
Validator.config = {
    first_name:'isNotEmpty'
};
//设置验证方法
Validator.types.isNotEmpty = {
    validate:function (data) {  
      return data !== '';
    },
    instructions:'the value cannot be empty';
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值