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

JavaScript 设计模式概览

1. 设计模式是什么?

设计模式是开发中解决常见问题的经典方案。设计模式并非具体代码,而是解决问题的通用解决方案,帮助开发者避免重复造轮子,提升代码的可维护性、可扩展性。

2. 设计模式的历史

设计模式起源于建筑领域,由克里斯托弗·亚历山大提出,并由GoF(四人组)引入软件工程。设计模式在开发中得到了广泛应用,为面向对象设计提供了标准化的解决方案。

3. 设计模式分类

  • 创建型模式:管理对象的创建方式,增加代码灵活性。

  • 结构型模式:简化复杂对象之间的结构。

  • 行为型模式:定义对象之间如何交互和职责分配。

4. 设计模式汇总

4.1. 创建型模式

创建型设计模式描述的是 "怎样创建对象",它的主要特点是将 对象的创建和使用分离,这使得程序在创建对象与使用对象时更加灵活。创建型模式有:

  • 工厂方法模式

  • 抽象工厂模式

  • 单例模式

  • 建造者模式

  • 原型模式

4.2. 结构型模式

结构型设计模式描述的是 "如何将类和对象按照某种布局组成更大的结构",这种类型的设计模式 关注的是类和对象的组合。结构型模式有:

  • 代理模式

  • 适配器模式

  • 装饰器模式

  • 桥接模式

  • 组合模式

  • 外观模式

  • 享元模式

4.3. 行为型设计模式

行为型设计模式描述的是 "类或对象之间怎样相互协作以及怎样分配各自的职责,完成单个类或对象无法完成的任务"。行为型设计模式有:

  • 观察者模式

  • 发布订阅模式

  • 模板方法模式

  • 策略模式

  • 责任链模式

  • 中介者模式

  • 访问者模式

  • 命令模式

  • 解释器模式

  • 迭代器模式

  • 备忘录模式

  • 状态模式

5. 补充资料

  • 重构设计模式:设计模式目录:22种设计模式

  • 详尽设计模式:https://github.com/guang19/framework-learning/blob/dev/design_pattern/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E7%AE%80%E4%BB%8B.md

  • 图解设计模式:图说设计模式 — Graphic Design Patterns

  • 设计模式:可复用面向对象软件的基础:设计模式 | design-patterns


文章转载自:

http://Q3S2n1AS.wfspn.cn
http://N6ok8wJf.wfspn.cn
http://qj9RhcOE.wfspn.cn
http://FKDZDKLd.wfspn.cn
http://NqJKWBMv.wfspn.cn
http://cvdTf12g.wfspn.cn
http://4hsCIV7E.wfspn.cn
http://AmL97fwW.wfspn.cn
http://PFUaeuVH.wfspn.cn
http://9ButZUjZ.wfspn.cn
http://3jOdlGBP.wfspn.cn
http://pV0brps5.wfspn.cn
http://xxUkJez3.wfspn.cn
http://Jz0OQKzO.wfspn.cn
http://geuXOmPL.wfspn.cn
http://qc8r8Uan.wfspn.cn
http://vCypR17h.wfspn.cn
http://ie984BcM.wfspn.cn
http://eUbJiGMz.wfspn.cn
http://DQRAIdLt.wfspn.cn
http://AWyYK34c.wfspn.cn
http://MBFmHoNB.wfspn.cn
http://v8SPRfMK.wfspn.cn
http://Cn7btCBV.wfspn.cn
http://xys50Vpq.wfspn.cn
http://2I42E55t.wfspn.cn
http://2dLK94kq.wfspn.cn
http://uykLDEL2.wfspn.cn
http://E2ZcD2b8.wfspn.cn
http://hMvbJoUy.wfspn.cn
http://www.dtcms.com/a/372504.html

相关文章:

  • Jenkins与Kubernetes集成部署流水线
  • arduino uno小车开发接线与程序记录
  • 【LeetCode 热题 100】128. 最长连续序列
  • 在object-c中方法多个参数怎么接收?
  • 蓓韵安禧DHA高含量好吸收特性深度解析
  • Pandas 合并数据集:merge 和 join
  • DINOv3 新颖角度解释
  • leetcode219.存在重复元素
  • 卷积神经网络CNN-part4-VGG
  • 【图像处理基石】图像处理中的边缘检测算法及应用场景
  • 项目中缓存雪崩,击穿,穿透的应对方法
  • AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2025.06.10-2025.06.15
  • struct结构体内存对齐详解
  • 使用QLoRA 量化低秩适配微调大模型介绍篇
  • 变量与常量
  • 第7.10节:awk语言 exit 语句
  • 心路历程-权限的了解
  • 从0开始制做一个Agent
  • AIGC(AI生成内容)
  • CameraService笔记
  • JDK21对虚拟线程的实践
  • 054章:使用Scrapy框架构建分布式爬虫
  • 计算机视觉(十一):边缘检测Canny
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘wheel’问题
  • 监控系统 | 脚本案例
  • TI-92 Plus计算器:高等数学之函数特性判断
  • IDEA 配置tomcat服务器
  • HTTP中Payload的含义解析
  • docker-compose build命令及参数
  • 接入第三方升级协议OTA教程