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

80 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

一、什么是设计模式

定义

  • 模式是一种可服用的解决方案,用于解决软件设计中遇到的常见问题。

  • 设计模式是软件设计中常见问题解决方案模型

  • 是历史经验的总结

  • 与特定语言无关

二、设计模式的分类及原则

2.1 三种分类

一般认为的设计模式共有23种,将其分为3类:

  1. 创建型——如何创建一个对象

    • 工厂模式
    • 抽象工厂
    • 建造者
    • 原型
    • 单例模式
  2. 结构型——如何灵活的将对象组装成较大的结构

    • 适配器模式
    • 桥接模式
    • 装饰器模式
    • 外观模式
    • 享元模式
    • 代理模式
  3. 行为型——负责对象间的高效通信和职责划分

2.2 六大原则

设计模式一般要遵循设计原则,设计原则分为6类:

- *单一职责原则*: 一个类应该只有一 个发生变化的原因。

- *开闭原则*:一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭。

- *氏替换原则*:所有引用基类的地方必须能透明地使用其子类的对象,即子类对象可以替换其父类对象,而程序执行效果不变。

- *迪米特法则*:又叫作最少知识原则,即一个类对于其他类知道的越少越好。

- *接口隔离原则*:多个特定的客户端接口要好于一个通用性的总接口

- *依赖倒置原则*1. 上层模块不应该依赖底层模块, 它们都应该依赖于抽象。
2. 抽象不应该依赖于细节,细节应该依赖于抽象

三、常见设计模式

3.1 浏览器中的设计模式

1. 单例模式

  • 定义:全局唯一访问对象
  • 应用场景:缓存,全局状态管理等

例如在Windows中:

image.png

### 2. 发布订阅模式(观察者模式)
  • 定义:一种订阅机制,可在被订阅对象发生变化时通知订阅者
  • 应用场景:从系统架构之间的解耦到业务之间的一些实现模型,应用广泛。例如:邮件订阅、上线订阅等

image.png

3.2 JavaScript中的设计模式

1. 原型模式

  • 定义:复制已有对象来创建新的对象
  • 应用场景:JS中对象创建的基本模式

2. 代理模式

  • 定义:可自定义控制对原有对象的访问方式以及写入方式,并允许在更新前后做一些额外的处理
  • 应用场景:监控、代理工具、前端框架实现等

3. 迭代器模式

  • 定义:在不暴露数据类型的情况下访问集合中的数据
  • 应用场景:数据结构中有多种数据类型:列表、树等,提供通讯用的操作接口

3.3 前端框架中的设计模式

1. 代理模式

image.png

  • 前端框架中对DOM操作的代理

没有框架时对DOM的操作:

graph TD
更改DOM属性 --> 视图更新

前端框架对DOM的操作:

graph TD
更改DOM属性 --> 更改虚拟DOM --> 视图更新

DOM更新前后的“钩子”

image.png

2. 组合模式

  • 定义:可对多个对象组合使用,也可对单个对象独立使用
  • 应用场景:DOM、前端组件、文件目录、部门等

React的组件结构:

image.png

image.png

四、个人总结

今天是我参与青训营学习的第4天,今天主要学习的内容是前端设计模式,包括前端设计模型在浏览器、JavaScript以及前端框架中的具体应用和一些实例。每种模式都有相应的理论与之对应,我们在处理问题时应该灵活运用不同的设计模式进行处理,达到行之有效的处理结果。