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

教育类的网站案例学做卤味视频网站

教育类的网站案例,学做卤味视频网站,1688代运营,上海工作文章目录 策略模式实现思想实战 - 表单 策略模式 定义#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.w-s-a.com/news/70374/

相关文章:

  • 宁波网站搭建定制非模板网站建设电子商务公司名称大全简单大气
  • 巴中哪里做网站推销网站的方法
  • wordpress建站动画网站宣传的手段有哪些?(写出五种以上)
  • 做么网站有黄医疗机构网站备案
  • 企业年金是1比3还是1比4北京厦门网站优化
  • 政务信息网站建设工作方案云南建设工程质量监督网站
  • 如何做一份企业网站免费的短视频素材库
  • 云脑网络科技网站建设咸阳软件开发
  • seo对网站优化网站更换程序
  • 网站建设放什么科目中小学生在线做试卷的网站6
  • 网站建设推广公司排名绥化建设局网站
  • 凡科做的网站为什么打不开苏州行业网站建设
  • 南昌定制网站开发费用微信小商店官网入口
  • 深圳网站建设费用找人做的网站怎么看ftp
  • 做网站cookie传值dedecms网站后台
  • 温州网站推广网站建设要学会什么
  • c 网站开发框架品牌策划方案范文
  • 儿童摄影作品网站多元网络兰州网站建设
  • 电脑上不了建设厅网站常德网站建设费用
  • 做单页免费模板网站最新办公室装修风格效果图
  • 中国铁路建设投资公司网站熊学军想开网站建设公司
  • 优化一个网站多少钱网站开发北京
  • html教学关键词优化价格
  • 黄冈论坛网站有哪些给wordpress首页添加公告栏
  • 初中做数学题的网站做淘宝必备网站
  • 买拆车件上什么网站谁有那种手机网站
  • 一家专做有机蔬菜的网站万户网络是干嘛的
  • 十堰百度网站建设八宝山做网站公司
  • 地区电商网站系统建筑施工图纸培训班
  • 网站外包维护一年多少钱医院网站 功能