当前位置: 首页 > news >正文

自助创建网站北京网站制作推广

自助创建网站,北京网站制作推广,怎么做国外的网站吗,枞阳网站建设文章目录 前言介绍代码场景例子优缺点后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端设计模式 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误&#…

文章目录

  • 前言
  • 介绍
  • 代码
  • 场景例子
  • 优缺点
  • 后言

前言

hello world欢迎来到前端的新世界


😜当前文章系列专栏:前端设计模式
🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出)🌹
💖感谢大家支持!您的观看就是作者创作的动力

介绍

  • 策略模式简单描述就是:对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。把它们一个个封装起来,并且使它们可以互相替换

代码

<html>
<head><title>策略模式-校验表单</title><meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body><form id = "registerForm" method="post" action="http://xxxx.com/api/register">用户名:<input type="text" name="userName">密码:<input type="text" name="password">手机号码:<input type="text" name="phoneNumber"><button type="submit">提交</button></form><script type="text/javascript">// 策略对象const strategies = {isNoEmpty: function (value, errorMsg) {if (value === '') {return errorMsg;}},isNoSpace: function (value, errorMsg) {if (value.trim() === '') {return errorMsg;}},minLength: function (value, length, errorMsg) {if (value.trim().length < length) {return errorMsg;}},maxLength: function (value, length, errorMsg) {if (value.length > length) {return errorMsg;}},isMobile: function (value, errorMsg) {if (!/^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|17[7]|18[0|1|2|3|5|6|7|8|9])\d{8}$/.test(value)) {return errorMsg;}                }}// 验证类class Validator {constructor() {this.cache = []}add(dom, rules) {for(let i = 0, rule; rule = rules[i++];) {let strategyAry = rule.strategy.split(':')let errorMsg = rule.errorMsgthis.cache.push(() => {let strategy = strategyAry.shift()strategyAry.unshift(dom.value)strategyAry.push(errorMsg)return strategies[strategy].apply(dom, strategyAry)})}}start() {for(let i = 0, validatorFunc; validatorFunc = this.cache[i++];) {let errorMsg = validatorFunc()if (errorMsg) {return errorMsg}}}}// 调用代码let registerForm = document.getElementById('registerForm')let validataFunc = function() {let validator = new Validator()validator.add(registerForm.userName, [{strategy: 'isNoEmpty',errorMsg: '用户名不可为空'}, {strategy: 'isNoSpace',errorMsg: '不允许以空白字符命名'}, {strategy: 'minLength:2',errorMsg: '用户名长度不能小于2位'}])validator.add(registerForm.password, [ {strategy: 'minLength:6',errorMsg: '密码长度不能小于6位'}])validator.add(registerForm.phoneNumber, [{strategy: 'isMobile',errorMsg: '请输入正确的手机号码格式'}])return validator.start()}registerForm.onsubmit = function() {let errorMsg = validataFunc()if (errorMsg) {alert(errorMsg)return false}}</script>
</body>
</html>

场景例子

  • 如果在一个系统里面有许多类,它们之间的区别仅在于它们的’行为’,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
  • 一个系统需要动态地在几种算法中选择一种。
  • 表单验证

优缺点

优点

  • 利用组合、委托、多态等技术和思想,可以有效的避免多重条件选择语句
  • 提供了对开放-封闭原则的完美支持,将算法封装在独立的strategy中,使得它们易于切换,理解,易于扩展
  • 利用组合和委托来让Context拥有执行算法的能力,这也是继承的一种更轻便的代替方案

缺点

  • 会在程序中增加许多策略类或者策略对象
  • 要使用策略模式,必须了解所有的strategy,必须了解各个strategy之间的不同点,这样才能选择一个合适的strategy

后言

创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力

http://www.yayakq.cn/news/531370/

相关文章:

  • 南阳做网站优化龙岗网站建设公司官网
  • 南阳商城站陕西安康网站建设
  • 普陀网站建设比较实惠永州网站建设多少钱
  • 注册公司最低需要多少钱seo项目优化案例分析文档
  • 中国关于生态文明建设的网站青岛招聘seo
  • 网站开发的现状及研究意义网站开发公司名字
  • 阿里云网站建设好用吗国家在线观看免费视频
  • 网站建设提供的网站资料建设一个网站需要什么手续
  • 群晖怎么做网站百度搜索引擎的网址是多少
  • 网站赚钱吗坪山网站建设基本流程
  • 餐饮公司做网站好处做网站是用啥软件做的
  • 科技公司网站模板官网私密浏览器看片
  • 网站服务器证书有问题深圳注册公司注册资金要求
  • 2019做网站wordpress识别环境的文件
  • 做网站需要什么cailiao建网站赚钱方法
  • 建设公司营销网站微信注册网站入口
  • 网站建设的法律依据同安建设局网站
  • 聚诚商务做网站多少钱网络培训证书
  • 动漫电影做英语教学视频网站搭积木建网站软件
  • 内网网站开发报价苏州网站开发建设方案
  • 建网站多少钱一个平台商城网站建设定制网站建设
  • 网站关键词排名批量查询在线做app的网站
  • 临时展厅搭建方案蒙阴网站优化
  • 国外好的网页设计汕头seo推广外包
  • 做网站后台服务器什么最好表情包在线制作网站
  • 做外贸需要做个英文网站吗情侣wordpress模板下载
  • 创建一个个人网站交互设计产品有哪些
  • 技术支持 东莞网站建设鞋子聊城做网站的公司价位
  • 建设工程资质证书二维码扫描网站网站建设 化工
  • 哪个网站可以做创意短视频明月 WordPress