前端设计模式| 青训营笔记

91 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第3天。本篇笔记是对 前端设计模式应用 课程的内容总结,并结合了自己的一些理解,对内容进行了一定的梳理。有意见和建议也欢迎在评论区交流讨论呀~

知识点

  • 设计模式介绍
  • 设计模式在前端开发中的应用

什么是设计模式

设计模式是 软件设计中常见问题的解决方案模型,是在特定上下文下对于普遍出现问题的 可重用解决方案 ,是对软件设计历史经验的总结,与语言无关。

也就是说设计模式可以将软件的设计方式进行分类、概括,并能够总结归纳出这些不同设计方式的类型优缺点以及其适用范围。

局限性

设计模式的概念是由《设计模式:可复用面向对象软件的基础》在 1994 年所提出的。

  • 适用层面局限:主要是面向对象程序设计,而现代前端开发主要使用函数式编程范式(例如 React 框架)
  • 实用层面局限:仅仅概括了软件设计的模式,而具体实现中的细节仍需要设计;设计模式难以指导设计优秀软件(抽象到具体的过程),设计模式难以实现复用。

矛盾点:无经验的工程师在具体场景难以使用设计模式(将抽象具象化);有经验的工程师已经在过往经历中熟悉了这些设计模式的使用(已经熟悉了整个具象化过程,并可能总结了方法论)。

image.png

在全球对于设计模式的搜索热度在不断下降。

设计模式在前端开发中的应用

设计模式有缺点,但依然能够为我们提供一个对 软件设计方案 标准的总结。通用术语,方便工程师进行交流,不同具体设计之间对比学习。

单例模式

如果一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。

多用于缓存、全局状态管理,例如在浏览器中的全局唯一访问对象 window 。

发布订阅模式

基于一个事件(主题)通道,希望接收通知的对象 Subscriber 通过自定义事件订阅主题,被激活事件的对象 Publisher 通过发布主题事件的方式通知各个订阅该主题的 Subscriber 对象。

是一种订阅机制,在被订阅对象变化时通知订阅者。例如为按钮添加的点击事件,这个事件就是订阅者。

原型模式

复制已有对象创建新的对象,例如 JS 中创建对象。

代理模式

自定义控制对原对象的访问方式,例如监控代理工具、前端框架的虚拟 DOM 实现对真实 DOM 的代理操作。

迭代器模式

在不暴露数据类型的情况些访问集合数据,例如 for...of 遍历对象、数组等。

组合模式

多个对象组合使用,也可单个对象独立使用,例如 DOM 树形结构、前端组件、文件目录。

组合模式实现文件夹

使用组合模式,实现了一个包含文件夹、文件的文件系统,能够简单的实现文件大小记录、添加文件层级等功能。

码上掘金 (juejin.cn)

参考文章