开发中,我们或多或少地接触了设计模式,但是很多时候不知道自己使用了哪种设计模式或者说该使用何种设计模式。本文意在梳理常见设计模式的特点,从而对它们有比较清晰的认知。

JavaScript 中常见设计模式

  • 单例模式
  • 策略模式
  • 代理模式
  • 迭代器模式
  • 发布-订阅模式
  • 命令模式
  • 组合模式
  • 模板方法模式
  • 享元模式
  • 职责链模式
  • 中介者模式
  • 装饰者模式
  • 状态模式
  • 适配者模式
  • 观察者模式

各设计模式关键词

看完了上述设计模式后,把它们的关键词特点罗列出来,以后提到某种设计模式,进而联想相应的关键词和例子,从而心中有数。

设计模式 特点 案例
单例模式 一个类只能构造出唯一实例 创建菜单对象
策略模式 根据不同参数可以命中不同的策略 动画库里的算法函数
代理模式 代理对象和本体对象具有一致的接口 图片预加载
迭代器模式 能获取聚合对象的顺序和元素 each([1, 2, 3], cb)
发布-订阅模式 PubSub 瀑布流库
命令模式 不同对象间约定好相应的接口 按钮和命令的分离
组合模式 组合模式在对象间形成一致对待的树形结构 扫描文件夹
模板方法模式 父类中定好执行顺序 咖啡和茶
享元模式 减少创建实例的个数 男女模具试装
职责链模式 通过请求第一个条件,会持续执行后续的条件,直到返回结果为止 if else 优化
中介者模式 对象和对象之间借助第三方中介者进行通信 测试结束告知结果
装饰者模式 动态地给函数赋能 天冷了穿衣服,热了脱衣服
状态模式 每个状态建立一个类,状态改变会产生不同行为 电灯换挡
适配者模式 一种数据结构改成另一种数据结构 枚举值接口变更
观察者模式 当观察对象发生变化时自动调用相关函数 vue 双向绑定

参考文献

*《JavaScript设计模式与开发实践》

JavaScript 中常见设计模式整理相关推荐

  1. JavaScript 中的设计模式

    目录 1. 单例模式 2. 策略模式 3. 代理模式 4. 装饰者模式 5. 组合模式 6. 工厂模式 7. 访问者模式 8. 发布订阅模式 9. 观察者模式 10. 参考链接 设计模式(Design ...

  2. JavaScript中的设计模式

    设计模式是在软件工程领域中广泛使用的一种重要概念.它是指针对特定问题或情况的通用解决方案,通常由经过验证的最佳实践和经验构成.在JavaScript编程中,设计模式同样是一个非常重要的概念.在这篇文章 ...

  3. php中常见的错误类型有,JavaScript中常见的错误类型有哪些?(详细介绍)

    在JavaScript中,当发生错误时会生成描述错误类型的错误对象,此错误对象包含错误类型和编号等信息,这些信息可用于后续处理等,在本篇文章中将给大家介绍常见的错误类型以及如何处理这些错误. Java ...

  4. 一文梳理JavaScript中常见的七大继承方案

    阐述JavaScript中常见的七大继承方案

  5. JavaScript:JavaScript中常见获取对象元素的方法

    介绍: javascript中常见的3种获取元素的方法,分别是通过元素ID.通过标签名字和通过类名字来获取 操作如下: 1.getElementById DOM提供了一个名为getElementByI ...

  6. JavaScript中常见的字符串操作函数及用法汇总

    转载地址:http://www.jb51.net/article/65358.htm 这篇文章主要介绍了JavaScript中常见的字符串操作函数及用法,实例汇总了javascript常见的字符串转换 ...

  7. 理解JavaScript中部分设计模式

    理解JavaScript中部分设计模式 什么是设计模式 在软件工程中,设计模式是软件设计中常见问题可重用的方案.设计模式代表着经验丰富的软件开发人员使用的最佳实践.设计模式可以被认为是编程模板. 为什 ...

  8. JavaScript 中常见排序算法详解

    十大经典算法 一张图概括: 名词解释: n:数据规模 k:"桶"的个数 In-place:占用常数内存,不占用额外内存 Out-place:占用额外内存 稳定性:排序后2个相等键值 ...

  9. JavaScript中常见的几种“缺少对象”错误

    在JavaScript中,程序调度过程中经常会出现缺少对象错误,这里的对象有时候是变量,有时候是函数,有时候可能是对象等等. 缺少对象错误经常有以下几种情况 1.变量没有定义 使用没定义的变量时就会出 ...

最新文章

  1. learning to rank_排序
  2. (送)Java 架构技术揭秘:Redis+Nginx+Dubbo精选+面试题+精选视频
  3. python中的for循环
  4. 1到30图片大全顺序_终于解决了!自媒体作者,如何给 Word 中的图片批量编号?...
  5. 马来西亚国家银行暂无发行央行数字货币计划
  6. PAT 1085. PAT单位排行 (25) - 乙级
  7. Collection __NSArrayM: 0xxxxxxx was mutated while being enumerated.
  8. oracle获取表或视图的字段名、数据类型、注释
  9. 20191026每日一句
  10. SAP OB53 本年利润科目的年初余额和年末余额不一致的伪问题
  11. jQuery 梁桐老师笔记 - 属性,CSS,文档处理
  12. 服务器虚拟化的主要特点,网络虚拟化的七大特征
  13. python字符串输入并倒叙_基于python3实现倒叙字符串
  14. 肿瘤NGS的常规检测流程
  15. Linux添加路由的方法
  16. 【转】以太坊 2.0 中的验证者经济模型
  17. 华中师范大学计算机学院学分绩,华中师范大学学生学业成绩表(模板)
  18. 七段显示器显示整数(C语言) ----存稿
  19. Linux云服务-Mysql卸载篇
  20. 无时不在断流的小米10手机的共享热点

热门文章

  1. 话说模式匹配(1) 什么是模式?
  2. WPF 用Main函数方式启动程序
  3. zabbix监控进程的CPU和内存占用量
  4. sizeof,终极无惑(上)
  5. web开发人员必备的提高开发水平的20个参考手册
  6. 如何创建隐藏用户帐号
  7. 速打微补丁!这个越权文件读取漏洞影响 Windows OS
  8. Forrester《2021年应用安全现状报告》提要
  9. 详解苹果 macOS Mail 中的零点击漏洞
  10. Adobe 紧急修复严重的 CodeFusion 漏洞