位置: 编程技术 - 正文

深入理解JavaScript系列(33):设计模式之策略模式详解(深入理解新发展理念)

编辑:rootadmin

推荐整理分享深入理解JavaScript系列(33):设计模式之策略模式详解(深入理解新发展理念),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入理解javascript特性.pdf,深入理解javascript,深入理解新发展理念,推进供给侧结构性改革,深入理解计算机系统,深入理解javascript,深入理解javascript特性,深入理解javascript特性.pdf,深入理解javascript特性.pdf,内容如对您有帮助,希望把文章链接给更多的朋友!

介绍

策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。

正文

深入理解JavaScript系列(33):设计模式之策略模式详解(深入理解新发展理念)

在理解策略模式之前,我们先来一个例子,一般情况下,如果我们要做数据合法性验证,很多时候都是按照swith语句来判断,但是这就带来几个问题,首先如果增加需求的话,我们还要再次修改这段代码以增加逻辑,而且在进行单元测试的时候也会越来越复杂,代码如下:那如何来避免上述代码中的问题呢,根据策略模式,我们可以将相同的工作代码单独封装成不同的类,然后通过统一的策略处理类来处理,OK,我们先来定义策略处理类,代码如下:然后剩下的工作,就是定义types里存放的各种验证类了,我们这里只举几个例子:使用的时候,我们首先要定义需要验证的数据集合,然后还需要定义每种数据需要验证的规则类型,代码如下:最后,获取验证结果的代码就简单了:总结

策略模式定义了一系列算法,从概念上来说,所有的这些算法都是做相同的事情,只是实现不同,他可以以相同的方式调用所有的方法,减少了各种算法类与使用算法类之间的耦合。

从另外一个层面上来说,单独定义算法类,也方便了单元测试,因为可以通过自己的算法进行单独测试。

实践中,不仅可以封装算法,也可以用来封装几乎任何类型的规则,是要在分析过程中需要在不同时间应用不同的业务规则,就可以考虑是要策略模式来处理各种变化。

深入理解JavaScript系列():设计模式之组合模式详解 介绍组合模式(Composite)将对象组合成树形结构以表示部分-整体的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。常见的场景

深入理解JavaScript系列():设计模式之模板方法详解 介绍模板方法(TemplateMethod)定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该

深入理解JavaScript系列():设计模式之适配器模式详解 介绍适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不

标签: 深入理解新发展理念

本文链接地址:https://www.jiuchutong.com/biancheng/382862.html 转载请保留说明!

上一篇:深入理解JavaScript系列(30):设计模式之外观模式详解(深入理解javascript特性)

下一篇:深入理解JavaScript系列(40):设计模式之组合模式详解(深入理解新发展理念)

  • 电子税务局登陆密码总是错误怎么办
  • 融资租赁印花税怎么交
  • 无形资产多摊销了怎么办
  • 固定资产加速折旧法
  • 金三财务报表如何更正
  • 对公账户卡号是私人账号
  • 利润表里的所得税怎么算
  • 金蝶专业版二级科目设置
  • 业务活动费用和行政支出
  • 企业弥补亏损的三个途径
  • 财产性收入是非劳动性收入吗
  • 资本公积金转增股本所获取的收益属于
  • 资产减值损失是
  • 当月未认证发票分录
  • 缴纳企业所得税怎么计算
  • 个体户个人所得税税率表2023计算
  • 烟酒销售公司要交哪些税
  • 工程交税需要什么资料
  • 计提附加税的会计处理
  • 发票勾选认证截图图片
  • 专用发票退回
  • 资本公积转增资本个人股东是否纳税
  • 跨期间收入如何确定当期收入
  • 申报印花税填表过程
  • 差旅费账务处理例子
  • 调整以前年度错账如何调整报表
  • laravel数据迁移
  • 公司员工意外险怎么买
  • nomoreporn.exe - nomoreporn是什么进程 有什么用
  • 什么样的企业是好企业,什么样的员工是好员工
  • uniapp实战视频教程
  • Sublime Text v4.0(4143)破解方法
  • 个人独资企业怎么做账
  • 赔偿金和违约金有什么区别
  • 马德拉群岛旅游攻略
  • 黑马程序员前端工程师简历
  • edge浏览器about:flags
  • 采购预算测算依据
  • php中实现文件上传需要用到哪几个函数
  • [Vue]Vue3学习笔记(尚硅谷)
  • 编写jsp程序,实现简易计算机
  • 睿智目标检测yolov8
  • 超参数有哪些调优方法
  • 一般人财务报表季报还是月报
  • 自建厂房转固定资产如何办理手续
  • 其他应付款的账户结构
  • 帝国cms真的很好用
  • 有形动产租赁属于现代服务业吗
  • 关联方占用资金应对措施
  • 开具利息收入发票需不需要有经营范围
  • 负债类科目有借贷方向吗
  • 个人独资所得
  • 什么叫境外地区
  • 超市买太多东西怎么拿走
  • 计量差错引起的原材料盘亏
  • 如何收信用卡付款
  • 企业将资金用于购买原材料属于什么过程
  • 一般纳税人内外账
  • 新办企业环评费用多少
  • 会计账簿的装订绳子
  • 如何做好企业安全生产工作
  • 房地产开发企业资质管理规定
  • mysql5.7.32免安装教程
  • win10怎么运行安卓软件
  • ubuntu安装指南
  • commserver什么意思
  • 注册表的命令
  • win7删除通知区域图标
  • linux中添加用户和组的操作
  • Win10系统如何利用360压缩软件解决打不开RAR压缩包的问题
  • quickdcf.exe - quickdcf是什么进程 作用是什么
  • WIN764位系统8G内存识别一半解决办法
  • cocos做游戏
  • jquery插件大全
  • nodejs 视频切片
  • android四大组件面试
  • ShareSdk实现第三方分享功能
  • python中的description
  • wordpress 0day
  • javascript bug
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设