3.js模式-策略模式
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();
转载于:https://www.cnblogs.com/SLchuck/p/4869711.html
3.js模式-策略模式相关推荐
- js使用策略模式实现表单验证
使用策略模式实现表单验证 1.什么是策略模式 策略模式说起来很高大上,其实现实生活中很常见.比如,你要从老家去北京故宫游玩,可选的出行方式有坐火车.开车自驾.坐飞机等几种方式, 至于选择哪种出现方式要 ...
- 设计模式 — 行为型模式 — 策略模式
目录 文章目录 目录 策略模式 应用场景 代码示例 策略模式 策略模式中,首先定义了一系列不同的算法,并把它们一一封装起来,然后在策略类中,使这些算法可以相互替换.这意味着,让一个类的行为(算法)可以 ...
- 23种模式——策略模式
目录 策略模式 策略模式的收银软件 策略模式的特点 使用场景 优缺点 策略模式和工厂模式的结合 策略(Strategy)模式 本质:分离算法,选择实现. 策略模式:针对一组算法,将每一个算法封装到具有 ...
- 模板模式+策略模式优化
前言 写在最前面,最近在项目中发现一部分代码,可以用模板模式+策略模式来进行优化. 背景 业务中,系统中对订单状态的处理,需要发送对用户短信发送或者微信推送等操作. 发送短信和微信推送钱,需要处理逻辑 ...
- 工厂模式+策略模式组合实现电商促销活动
项目中大多数设计模式都是组合使用的,对于单个设计模式小伙伴们可以去菜鸟教程学习一下,下面使用 Java 实现的工厂模式+策略模式组合实现电商促销 首先,根据策略的不同,一些需要优惠计算,一些需要普通计 ...
- java-抽象工厂模式+工厂方法模式+策略模式简单应用实战(登录场景)
前言 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式 ...
- 工厂模式+策略模式+反射机制解决系统功能模块相似的问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 背景 痛点 一.如何根据不同条件获取不同的数据库Mapper? 二.如何根据不同条件创建相应的数据库实体对象? 总结 背景 ...
- 进阶学习之旅-设计模式之(委派模式策略模式)
文章目录 1.课程学习目标 2.内容定位 3.委派模式详解 3.1委派模式的定义 3.2 demo案例 3.2.1模拟Boss指派任务给Leader 由员工完成任务执行 3.2.2 模拟spring ...
- springboot 使用工厂模式+策略模式替代多重if 案例
项目背景: 由于做的是物联网项目,现在需要实现的是网关入网+子设备注册:网关有3个逻辑,分别为首次入网.解绑后同一个人入网(恢复).解绑后换人入网(换人).子设备注册: 原先写法是: if(type ...
最新文章
- 机器视觉图像采集卡的功能与应用
- 初一模拟赛总结(3.30)
- 16bit随机数生成matlab,关于matlab生成随机数
- 阿里、美团、滴滴产品经理共述:产品经理的“乐”与“伤”
- jquery prop(“outerHTML“) 获取当前标签和标签内部的html 代码
- 蚂蚁的开放:想办法摸到10米的篮筐 1
- 几种常见的服务器攻击类型
- 【思维导图】LAMPer技能树
- Spec2006使用说明
- 【程序员的浪漫】花式表白
- 用java判断三角形类型_判断三角形类型
- 独家专访李林 | 回归火币后的一年
- QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之02EC20模组硬件供电和开关机复位操作
- VMware安装mac的流程及unlocker 报错 、出现的一些问题解决方案整理
- C++11 Features in Visual C++ 11 - VS2010对C++11特性支持的情况
- 基于java的物联网架构实现
- 九种js弹出对话框的方法
- WIN7下ADS使用详解
- 计算机适合文科女生的专业,适合文科女生报考的专业有哪些
- linux 服务器 物联网吗,你知道为什么物联网需要LPWAN吗?
热门文章
- php运城,运城php培训
- android最新知识点总结,学习android之 知识点总结
- postgis安装_从零开始,构建电子地图网站:0_2_数据处理postgis
- 系统英伟达gpu驱动卸载_绕过CPU,英伟达让GPU直连存储设备
- java mongodb 返回所有field_JAVA高级之反射
- 详细讲解设计跳表的三个步骤(查找、插入、删除)
- 数字图像课程工程大作业分析
- TAFE的完整形式是什么?
- Java GregorianCalendar computeTime()方法与示例
- ffmpeg 解码音频(aac、mp3)输出pcm文件