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

建网站电话网站开发人员知乎

建网站电话,网站开发人员知乎,网站推广哪个平台最好,项链seo关键词🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 📘 文章引言 一…

 

 🎬 江城开朗的豌豆:个人主页

 🔥 个人专栏 :《 VUE 》 《 javaScript 》

 📝 个人网站 :《 江城开朗的豌豆🫛 》 

⛺️ 生活的理想,就是为了理想的生活 !

在这里插入图片描述

目录

 ⭐  专栏简介

 📘  文章引言

一、策略模式是什么

二、使用

三、应用场景

⭐  写在最后


 ⭐  专栏简介

        欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。

        同时,我们也会关注最新的前端趋势和发展动态。随着Web技术的不断演进,前端开发也在不断推陈出新。我们会及时介绍最新的前端框架、工具和技术,使你能够站在前沿,与时俱进。通过掌握最新的前端技术,你将能够在竞争激烈的Web开发领域中有更大的竞争力。

 📘  文章引言

一、策略模式是什么

策略模式(Strategy Pattern)指的是定义一系列的算法,把它们一个个封装起来,目的就是将算法的使用与算法的实现分离开来

一个基于策略模式的程序至少由两部分组成:

  • 策略类,策略类封装了具体的算法,并负责具体的计算过程
  • 环境类Context,Context 接受客户的请求,随后 把请求委托给某一个策略类

二、使用

举个例子,公司的年终奖是根据员工的工资和绩效来考核的,绩效为A的人,年终奖为工资的4倍,绩效为B的人,年终奖为工资的3倍,绩效为C的人,年终奖为工资的2倍

若使用if来实现,代码则如下:

var calculateBouns = function(salary,level) {if(level === 'A') {return salary * 4;}if(level === 'B') {return salary * 3;}if(level === 'C') {return salary * 2;}
};
// 调用如下:
console.log(calculateBouns(4000,'A')); // 16000
console.log(calculateBouns(2500,'B')); // 7500

从上述可有看到,函数内部包含过多if...else,并且后续改正的时候,需要在函数内部添加逻辑,违反了开放封闭原则

而如果使用策略模式,就是先定义一系列算法,把它们一个个封装起来,将不变的部分和变化的部分隔开,如下:

var obj = {"A": function(salary) {return salary * 4;},"B" : function(salary) {return salary * 3;},"C" : function(salary) {return salary * 2;} 
};
var calculateBouns =function(level,salary) {return obj[level](salary);
};
console.log(calculateBouns('A',10000)); // 40000

上述代码中,obj对应的是策略类,而calculateBouns对应上下通信类

又比如实现一个表单校验的代码,常常会像如下写法:

var registerForm = document.getElementById("registerForm");
registerForm.onsubmit = function(){if(registerForm.userName.value === '') {alert('用户名不能为空');return;}if(registerForm.password.value.length < 6) {alert("密码的长度不能小于6位");return;}if(!/(^1[3|5|8][0-9]{9}$)/.test(registerForm.phoneNumber.value)) {alert("手机号码格式不正确");return;}
}

上述代码包含多处if语句,并且违反了开放封闭原则,如果应用中还有其他的表单,需要重复编写代码

此处也可以使用策略模式进行重构校验,第一步确定不变的内容,即策略规则对象,如下:

var strategy = {isNotEmpty: function(value,errorMsg) {if(value === '') {return errorMsg;}},// 限制最小长度minLength: function(value,length,errorMsg) {if(value.length < length) {return errorMsg;}},// 手机号码格式mobileFormat: function(value,errorMsg) {if(!/(^1[3|5|8][0-9]{9}$)/.test(value)) {return errorMsg;}} 
};

然后找出变的地方,作为环境类context,负责接收用户的要求并委托给策略规则对象,如下Validator类:

var Validator = function(){this.cache = [];  // 保存效验规则
};
Validator.prototype.add = function(dom,rule,errorMsg) {var str = rule.split(":");this.cache.push(function(){// str 返回的是 minLength:6 var strategy = str.shift();str.unshift(dom.value); // 把input的value添加进参数列表str.push(errorMsg);  // 把errorMsg添加进参数列表return strategys[strategy].apply(dom,str);});
};
Validator.prototype.start = function(){for(var i = 0, validatorFunc; validatorFunc = this.cache[i++]; ) {var msg = validatorFunc(); // 开始效验 并取得效验后的返回信息if(msg) {return msg;}}
};

通过validator.add方法添加校验规则和错误信息提示,使用如下:

var validateFunc = function(){var validator = new Validator(); // 创建一个Validator对象/* 添加一些效验规则 */validator.add(registerForm.userName,'isNotEmpty','用户名不能为空');validator.add(registerForm.password,'minLength:6','密码长度不能小于6位');validator.add(registerForm.userName,'mobileFormat','手机号码格式不正确');var errorMsg = validator.start(); // 获得效验结果return errorMsg; // 返回效验结果
};
var registerForm = document.getElementById("registerForm");
registerForm.onsubmit = function(){var errorMsg = validateFunc();if(errorMsg){alert(errorMsg);return false;}
}

上述通过策略模式完成表单的验证,并且可以随时调用,在修改表单验证规则的时候,也非常方便,通过传递参数即可调用

三、应用场景

从上面可以看到,使用策略模式的优点有如下:

  • 策略模式利用组合,委托等技术和思想,有效的避免很多if条件语句
  • 策略模式提供了开放-封闭原则,使代码更容易理解和扩展
  • 策略模式中的代码可以复用

策略模式不仅仅用来封装算法,在实际开发中,通常会把算法的含义扩散开来,使策略模式也可以用来封装 一系列的“业务规则”

只要这些业务规则指向的目标一致,并且可以被替换使用,我们就可以用策略模式来封装它们

⭐  写在最后

请大家不吝赐教,在下方评论或者私信我,十分感谢🙏🙏🙏.

✅ 认为我某个部分的设计过于繁琐,有更加简单或者更高逼格的封装方式

✅ 认为我部分代码过于老旧,可以提供新的API或最新语法

✅ 对于文章中部分内容不理解

✅ 解答我文章中一些疑问

✅ 认为某些交互,功能需要优化,发现BUG

✅ 想要添加新功能,对于整体的设计,外观有更好的建议

最后感谢各位的耐心观看,既然都到这了,点个 👍赞再走吧!

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

相关文章:

  • 揭阳cms建站非法网站怎么推广
  • 网站建设与运营未来发展哪个网站可以做电子档的邀请函
  • 广东微信网站制作公司哪家好河南今天刚刚发生的新闻事件
  • 阿里巴巴做特卖的网站阿里云虚拟主机wordpress
  • 购买网站开发服务费入账成都微信网站建设
  • 网站模板 音乐响应式网站一般做几个设计稿
  • 一个空间怎么放多个网站做付费网站
  • 网站图片如何做水印wordpress非常卡
  • 做商城网站简单吗木马工业产品设计公司
  • 智慧旅游类网站开发商现在哪里大搞建设
  • 怎么用vs2015做网站中国到菲律宾物流费用
  • 网站源码建设模板图片编辑网页版
  • 利用access做网站wordpress可以换模板吗
  • 代替做网站推广网站建设客户资源
  • 青岛网站开发企业设计接单子网站
  • 北京制作手机网站数字营销网站
  • 长沙网站建设 599秦皇岛百度推广
  • 外贸平台做摩托车配件什么网站好广告营销方式有哪几种
  • 企业建设网站有什么作用php网站空间支持
  • 免费建站网站自助建站的网站建站重庆制作网站开发app开发公司
  • 做公司网站哪个好开发软件开发外包
  • 房地产型网站建设报价集团企业网站建设方案
  • 四平网站建设哪家好流媒体网站建设规划 所需设备
  • seo优化软件购买网站seo优化技能
  • 网站前台设计教程做兼职的网站都有哪些工作
  • 中小企业门户网站建设策略花蝴蝶免费直播视频在线观看
  • 惠州专门做网站徐州网站建设xlec
  • 保定网站建设公司大全个人可以注册网站吗
  • 珍爱网建设网站的目的如何优化搜索关键词
  • ui设计师怎么做简历网站wordpress社交模板