<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script>
var varlidator;
varlidator = {
validate: function(value, type){
var value = value;
var type = type;
switch(type){
case 'isnonEmpty' : {
//..yuju
return true;
}
case 'isNumber' : {
//..yuju
return true;
}
case 'isAlphaNum' : {
//..yuju
return true;
}
default :{
return 'someting'
}
}
}
};
alert(validator.validate('123','isNonEmpty')) ; //有点像命令行模式; var validator = {
types : {},
messages : [],
config : {},
validate : function(data){
var i, msg , type, checker, result_ok;
this.messages = [];
for(var i in data){
if(data.hasOwnProperty(i)){
type = this.config[i];
checker = this.types[type]; if(!type){
continue;
};
if(!checker){
throw{
name : 'ValidationError',
message : 'no handler to validate type '+ type
}
}; result_ok = checker.validate(data[i]);
if( !result_ok ){
msg = 'wrong' + checker.instructions;
this.message.push( msg );
}
}
};
return this.hasErrors();
},
hasErrors : function(){
return this.message.length !== 0
}
}; validator.types.inNonEmpty = {
validate : function(value){
return value !== '';
},
instructions : 'value can“t be null'
};
validator.types.isNumber = {
validate : function(value){
return !isNaN( value )
},
instructions : '必须是数字哦'
};
validator.types.isAlphaNum = {
validator : function(value){
return !/[^a-z0-9]/i,test(value);
},
instructions : '必须是数字哦'
}; var data = {
first_name : 'xx',
last_name : '00',
age : 26,
username : 'qihao'
};
validator.config = {
first_name : 'isNumber',
age : 'isNonEmpty',
username : 'isAplhaNum'
};
validator.validate( data );
validator.hasErrors();
</script>
</body>
</html>

JS模式:策略模式,感觉就是一个闭包存储信息,然后是加一些验证方法--还看了老半天的更多相关文章

  1. 3.js模式-策略模式

    1. 策略模式 策略模式定义一系列的算法,把它们封装起来,并且可以互相替换. var strategies = { isNonEmpty: function(value,errMsg){ if(val ...

  2. 命令模式 & 策略模式 & 模板方法

    一.策略模式 策略模式:封装易变化的算法,可互相替换. GoF<设计模式>中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换.该模式使得算法可独立于它们的客户变化. 比如 ...

  3. 工厂模式&策略模式。

    抽象.封装,具体事情做得越多,越容易犯错误.这每个做过具体工作的人都深有体会,相反,官做得越高,说出的话越抽象越笼统,犯错误可能性就越少.好象我们从编程序中也能悟出人生道理.(百度百科) 不断抽象封装 ...

  4. 简单工厂模式&策略模式-简介与区别

    不得不说,这两种模式真的很像. 相似点:都用到了面向对象的继承.多态.抽象,都拥有相似的结构. 不同点:工厂模式仅提供具体的实例对象,怎么使用这个对象是client的自由,策略模式client可以通过 ...

  5. js 设计模式——策略模式

    策略模式(Strategy) 定义:将定义的一组算法封装起来,使其相互之间可以替换.封装的算法具有一定的独立性,不会随客户端的变化而变化 废话不多说,先来个例子 // 例如要写一个计算两个数加减乘除的 ...

  6. [转]js设计模式-策略模式

    在程序设计中,常常遇到类似的情况,要实现某一个功能有多种方案可以选择.比如一个压缩文件的程序,既可以选择zip算法,也可以选择gzip算法.这些算法灵活多样,而且可以随意互相替换.这种解决方案就是本文 ...

  7. JS设计模式——策略模式

    设计模式高大上,业务代码用不上...平时用不上我们就可以忽略了吗? 非也,就像面试造火箭,工作拧螺丝一样.万一我们公司哪天要造火箭了,你得立马能上手. 同时,有些复杂的业务代码也可以用设计模式的思想去 ...

  8. js设计模式--策略模式

    策略模式: 定义了一系列的算法,把他们封装起来,是它们之间可以互相替换,此模式不会影响到使用算法的客户. 回忆下jquery里的animate方法: $( div ).animate( {" ...

  9. java设计模式--行为型模式--策略模式

    策略模式: 策略模式 概述 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化. 适用性 1.许多相关的类仅仅是行为有异.“策略”提供了一种用多个行 ...

随机推荐

  1. n个整数中,找出尽可能多的数使他们组成一个等差数列,求最长等差数列的长度

    例子:  3,8,4,5,6,2          返回值应该为 :5 这是昨天做的一道优酷土豆的编程题,和leetcode中的128/ Longest Consecutive Sequence 有点 ...

  2. 深入理解maven及应用--转

    (一):生命周期和插件 在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最 ...

  3. 一款免费好用的正则表达式工具:Regex Match Tracer

    推荐分享:一款免费好用的正则表达式工具:Regex Match Tracer  v2.1.5  free version 下载地址:Regex Match Tracer

  4. 转:程序员必须知道的几个Git代码托管平台

    http://www.open-open.com/lib/view/open1420704561390.html

  5. sort()和qsort()方法详解

    1,C++自带的自动排序方法:sort(); 要使用此函数只需用#include <algorithm> sort即可使用. sort(begin,end),表示一个范围,例如: int ...

  6. kvm虚拟机日常管理和配置操作命令梳理

    KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理.1)查看KVM虚拟机配置文件及运行状态KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/autostart目录是配置kvm ...

  7. ssh scp 复制文件和文件夹

    三,复制文件或目录命令:  复制文件:  (1)将本地文件拷贝到远程  scp 文件名用户名@计算机IP或者计算机名称:远程路径 本地192.168.1.8客户端  scp /root/install ...

  8. android实现点击背景图片不同区域实现不同事件

    有时候我们拿到一张背景图片,客户要求点击图片的不同区域去跳转或者实现不同的操作事件.我们首先要确认图片的点击区域,往往我们会在布局文件那里下手,但是这样不好做适配,所以我实现了以下方法,基本功能可以实 ...

  9. WebGIS空间数据请求访问机制

    通用的WebGIS空间数据请求访问机制如下图所示: 图1 WebGIS空间数据请求访问机制

  10. 基于jsp的文件上传和下载

    参考: 一.JavaWeb学习总结(五十)--文件上传和下载 此文极好,不过有几点要注意: 1.直接按照作者的代码极有可能listfile.jsp文件中 <%@taglib prefix=&qu ...