资讯专栏INFORMATION COLUMN

JavaScript设计模式之策略模式

go4it / 1192人阅读

摘要:设计模式与开发实践读书笔记。策略模式可以有效避免多重条件选择语句。当然,策略模式也有一些缺点增加了许多策略类或者策略对象。要使用策略模式,必须了解所有的,违反了最少知识原则。至此,回家咯附设计模式之发布订阅模式观察者模式

《JavaScript设计模式与开发实践》读书笔记。这本书挺好的,推荐。

俗话说,条条大路通罗马。在现实生活中,我们可以采用很多方法实现同一个目标。比如我们先定个小目标,先挣它一个亿。我们可以根据具体的实际情况来完成这个目标。

如果你是个富二代,可以接手家族生意,分分钟挣它一个亿。

如果你是个官二代,可以......(你懂的)。

如果你是个屌丝,可以......别做梦了,好好撸码。

策略模式的定义

定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。

举个例子:表单校验

在一个Web项目中,注册、登录等功能的实现都离不开表单提交。表单校验也是前端常常需要做的事。假设我们正在编写一个注册的页面,在点击提交按钮之前,有如下几条校验逻辑:

用户名不可为空,不允许以空白字符命名,用户名长度不能小于2位。

密码长度不能小于6位。

正确的手机号码格式。

也许,一开始我们会这么写:



    策略模式-校验表单
    


    
用户名: 密码: 手机号码:

这是一种很常见的编码方式,但它有很明显的缺点:

registerForm.onsubmit 函数比较庞大,包含了很多if语句,这些语句要覆盖所有的校验规则。

若校验规则有变,不得不深入到registerForm.onsubmit 函数的内部实现,违反开放-封闭原则。

算法的复用性差。

下面,让我们来用策略模式重构表单校验

策略模式:表单校验



    策略模式-校验表单
    


    
用户名: 密码: 手机号码:

策略模式优缺点

策略模式是一种常用且有效的设计模式。

策略模式可以有效避免多重条件选择语句。

策略模式提供了对开放-封装原则的完美支持,将方法封装在独立的strategy中,使得它们易于切换,易于理解,易于扩展。

复用性高。

当然,策略模式也有一些缺点

增加了许多策略类或者策略对象。

要使用策略模式,必须了解所有的strategy,违反了最少知识原则。

至此,回家咯~

附:JavaScript设计模式之发布-订阅模式(观察者模式)-Part1

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90999.html

相关文章

  • JavaScript设计模式与开发实践系列策略模式

    摘要:本系列为设计模式与开发实践作者曾探学习总结,如想深入了解,请支持作者原版策略模式策略模式的定义定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。 本系列为《JavaScript设计模式与开发实践》(作者:曾探)学习总结,如想深入了解,请支持作者原版 策略模式 策略模式的定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。 举个形象的例子,使用策略模式计算...

    spademan 评论0 收藏0
  • javascript设计模式学习笔记策略模式

    摘要:策略模式策略模式指的是定义一系列的算法,把它们一个个封装起来,将不变的部分和变化的部分隔开,实际就是将算法的使用和实现分离出来这样就能避免很多的条件判断并且增强了代码的复用性其中包含一个策略类和一个环境类计算奖金的例子策略类环境类设置原始工 策略模式 策略模式指的是 定义一系列的算法,把它们一个个封装起来,将不变的部分和变化的部分隔开,实际就是将算法的使用和实现分离出来, 这样就能避...

    wh469012917 评论0 收藏0
  • 听飞狐聊JavaScript设计模式系列15

    摘要:介一回,聊策略模式,策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。下一回,聊一聊的享元模式。 本回内容介绍 上一回,聊了聊链式编程,模拟了jQuery和underscore.js,并写了一个遍历多维数组的函数。介一回,聊策略模式(Strategy),策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们...

    guyan0319 评论0 收藏0
  • 前端也要学系列:设计模式策略模式

    摘要:做前端开发已经好几年了,对设计模式一直没有深入学习总结过。今天第一天,首先来讲策略模式。什么是策略模式四兄弟的经典设计模式中,对策略模式的定义如下定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换。 做前端开发已经好几年了,对设计模式一直没有深入学习总结过。随着架构相关的工作越来越多,越来越能感觉到设计模式成为了我前进道路上的一个阻碍。所以从今天开始深入学习和总结经典的设计模...

    Anchorer 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<