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

无锡网站开发电话xx公司网络组建方案毕业设计

无锡网站开发电话,xx公司网络组建方案毕业设计,建设网站费用多少,网站注册费计入什么科目文章目录 策略模式实现思想实战 - 表单 策略模式 定义#xff1a;定义一系列算法#xff0c;把它们一个个封装起来#xff0c;并且可以互相替换 例如#xff0c;我们要计算年终奖#xff0c;年终奖根据绩效 A、B、C 来计算最终数值 实现 最初我们很容易想到用 分支 if… 文章目录 策略模式实现思想实战 - 表单 策略模式 定义定义一系列算法把它们一个个封装起来并且可以互相替换 例如我们要计算年终奖年终奖根据绩效 A、B、C 来计算最终数值 实现 最初我们很容易想到用 分支 if 来解决这个问题如果绩效 A 则工资 x 2如果绩效 B 则工资 x 3 如果经常使用这样的分支结构你会发现代码耦合度很高很容易就出现一大坨代码堆砌在一起只是 x 2 或者 x 3 不足以形成难以维护的结构但如果不是 x 2 而是一个复杂的代码块我们显然会想到封装里面的代码 var performA function (salary) {return salary * 4; };var performB function (salary) {return salary * 3; };var performC function (salary) {return salary * 2; };var calcBonus function (level, salary) {if (level A) {return performA(salary);} else if (level B) {return performB(salary);} else if (level C) {return performC(salary);} }; 是的虽然我们优化了代码但没好到哪去如果要添加一个 D 级我们还是得堆砌代码 让我们来看看策略模式怎么做吧策略模式让 策略 被定义和封装且可以相互替换 这就是最终代码了但在 javascript 中实现策略相较 C# 或者其他语言来说要容易的多在下面举例了 C# 代码 var strategies {A: function (salary) {return salary * 4;},B: function (salary) {return salary * 3;},C: function (salary) {return salary * 2;}, };var calculateBonus function (level, salary) {return strategies[level](salary); };需要注意的是 strategies 对象存储的 3 个匿名函数 Func 类是用来存储函数的需要一定的函数工具类基础 掌握这样的思想以后试着把 {A, (salary) salary * 4} 解耦出去动态添加即可 using System; using System.Collections.Generic;public class Program {private static Dictionarystring, Funcdouble, double strategies new Dictionarystring, Funcdouble, double(){{A, (salary) salary * 4},{B, (salary) salary * 3},{C, (salary) salary * 2}};private static double CalculateBonus(string level, double salary){return strategies[level](salary);}public static void Main(string[] args){string level A;double salary 1000;double bonus CalculateBonus(level, salary);Console.WriteLine(Bonus: bonus);} }思想 通过上面的重构 消除了大片的分支语句计算奖金的逻辑不再存储在 CalculateBonus 里了而是分布在策略对象里策略对象只负责计算奖金策略对象之间可以相互替换 实战 - 表单 这是一种尤为常见的表单验证方式相信绝大多数前端程序员这样写过 显然能发现这里的 if 堆砌过多不仅如此内部的 逻辑 相比上面的代码也更复杂 var registerForm function (form) {if (form.username.value ) {alert(用户名不能为空);return false;}if (form.password.value.length 6) {alert(密码长度不能少于6位);return false;}if (!/(^1[3|5|8][0-9]{9}$)/.test(form.phoneNumber.value)) {alert(手机号码格式不正确);return false;} }; 我们可以用策略模式的思路来实现类似这样的代码这样当我们需要增加验证步骤时只需要添加策略内容即可 var validateStrategy {isNotEmpty: function (form) {if (form.name ) {return 用户名不能为空;}return ;},minLength: function (form) {if (form.password.length 6) {return 密码长度不能少于6位;}return ;},isMobile: function (form) {if (!/(^1[3|5|8][0-9]{9}$)/.test(form.phone)) {return 手机号码格式不正确;}return ;}, };var validate function (form) {for (let func in validateStrategy) {if (validateStrategy.hasOwnProperty(func) typeof validateStrategy[func] function) {var msg validateStrategy[func](form);if (msg ! ) return false;}}return true; };
http://www.dnsts.com.cn/news/136170.html

相关文章:

  • 南宁百度网站公司做网站的公司杭州
  • 网站建设硬件设计方案电脑手机一体网站
  • 做网站页面一般设置多大尺寸做房产网站不备案可以吗
  • 珠海做网站及推广什么东西可以做网站
  • 开发网站用什么语言常州建设局网站为什么打不开
  • 怎么利用快站做网站建筑行业数据开放平台官网
  • 网站建设演示ppt模板下载做资料分享网站有哪些
  • 网页设计网站模板素材湛江市建设局官网站
  • 用户体验好网站登录信产部网站
  • 中国优秀设计网站有哪些柯桥网站建设
  • 陶瓷网站模板科讯网站首页公告模板
  • 部门网站建设注意事项挂号网站建设
  • 最新网站建设软件广告设计需要学什么专业
  • 哪有网站给光头强做面推广产品的方法和步骤
  • 帝国cms 调用网站名称wordpress 清理缩略图
  • 个人公司网站怎么做产品设计作品
  • 网站建设找哪一家比较好中山cp网站建设
  • 用iis做的网站怎么更改端口学生做的网站
  • 做卡盟开端网站要多少钱网站小图标素材下载
  • 网站基础三要素会展策划与管理
  • 端州网站建设公司国外设计最漂亮的网站
  • 企业网站源码网腾讯云服务器新人优惠
  • wordpress站点美化个人可以做外贸的网站
  • wordpress相关推荐代码重庆二级站seo整站优化排名
  • 南京网站建设雷仁网络百度网站排名哪家好
  • 涂鸦网站建设网络查控系统设计方案
  • 长沙网站备案拍照点开发制作一个网站
  • 国外设计网站素材中国纪检监察报简介
  • 网站建设技术支持方案一个高端网站设计
  • 网站建设需要用到哪些技术wordpress如何恢复默认主题