JavaScript设计模式之策略模式

来源:互联网 发布:淘宝店铺怎么修改模板 编辑:程序博客网 时间:2024/06/10 12:31

策略模式

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

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';};
原创粉丝点击