资源描述:
《深入理解javascript系列(33):设计模式之策略模式详解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解深入理解JavaScript系列(33):设计模式之策略模式详解 这篇文章主要介绍了深入理解JavaScript系列(33):设计模式之策略模式详解,策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户,需要的朋友可以参考下 介绍 策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变
2、化不会影响到使用算法的客户。 正文 在理解策略模式之前,我们先来一个例子,一般情况下,如果我们要做数据合法性验证,很多时候都是按照swith语句来判断,但是这就带来几个问题,首先如果增加需求的话,我们还要再次修改这段代码以增加逻辑,而且在进行单元测试的时候也会越来越复杂,代码如下: 代码如下: validator={ validate:function(value,type){ switch(type){ case'isNonEmpty': {对党的认识也有了进一步的提高。才真正体会到了
3、中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 returntrue;//NonEmpty验证结果 } case'isNumber': { returntrue;//Number验证结果 break; } case'isAlphaNum': { returntrue;//AlphaNum验证结果 } def
4、ault: { returntrue; } } } }; //测试 alert(validator.validate("123","isNonEmpty"));对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 那如何来避免上述代码中的问题呢,根据策略模式,我们可以将相同的
5、工作代码单独封装成不同的类,然后通过统一的策略处理类来处理,OK,我们先来定义策略处理类,代码如下: 代码如下: varvalidator={ //所有可以的验证规则处理类存放的地方,后面会单独定义 types:{}, //验证类型所对应的错误消息 messages:[], //当然需要使用的验证类型 config:{}, //暴露的公开验证方法 //传入的参数是key=>value对 validate:function(data){ vari,msg,type,checker,
6、result_ok; //清空所有的错误信息 this.messages=[]; for(iindata){ if(data.hasOwnProperty(i)){ type=this.config[i];//根据key查询是否有存在的验证规则 checker=this.types[type];//对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习
7、,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解获取验证规则的验证类 if(!type){ continue;//如果验证规则不存在,则不处理 } if(!checker){//如果验证规则类不存在,抛出异常 throw{ name:"ValidationError", message:"Nohandlertovalidatetype"+type }; } result_ok=checker.validate(data[i]);//使用查到到的单个验证类进行验证
8、 if(!result_ok){ msg="Invalidvaluefor*"+i+"*,"+checker.instructions; this.messages.push(msg); } } } returnthis.hasErrors(); }, //helper对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本