青训营Day7——前端设计模式应用伴学笔记| 豆包MarsCode AI刷题

31 阅读3分钟

什么是设计模式?

在软件设计中为了解决常见问题而总结出的通用解决方案

  • 是历史经验的总结
  • 与特定语言无关
  • 是一种思维模式和方法论,而不是一种具体的实现方法
  • 能够提高系统的可维护性、可扩展性和可复用性。

设计模式的分类

设计模式可以按其功能划分为三大类:

  • 创建型模式(Creational Patterns):关注如何创建对象。
  • 结构型模式(Structural Patterns):关注如何将对象组合成更复杂的结构。
  • 行为型模式(Behavioral Patterns):关注对象之间的职责分配和高效通信。

浏览器中的设计模式:

  • 单例模式 * 定义:全局唯一访问对象 * 应用场景:缓存,全局状态管理等 * 在前端开发中,单例模式广泛用于全局状态管理和缓存等场景。例如,浏览器中的 localStoragesessionStorage,它们的设计即使得同一页面可以在不同的浏览器标签中共享状态,避免了创建多个实例的浪费。
  • 发布订阅模式 * 定义:一种订阅机制,可在被订阅对象发生变化时通知订阅者 * 应用场景:从系统架构之间的解耦,到业务中一些实现模式,像邮件订阅,上线订阅等等,应用广泛 * 发布订阅模式常用于浏览器中的事件机制中,例如 DOM 事件系统。事件源(发布者)可以将事件广播给所有订阅该事件的监听器(订阅者)。这种解耦设计使得系统可以灵活地添加和移除事件监听器。

JS中的设计模式:

  • 原型模式 * 定义:复制已有对象来创建新的对象 * 应用场景:JS中对象创建的基本模式 * JavaScript 中的对象是通过原型链来继承属性和方法的。这实际上就是原型模式的应用,通过修改对象的原型,可以实现对象的继承和扩展功能。
  • 代理模式 * 定义:可自定义控制对原对象的访问模式,并且允许在更新前后做一些额外处理 * 应用场景:监控,代理工具,前端框架实现等等 * 在前端框架和一些工具库中,代理模式广泛应用于数据绑定和状态管理。例如,Vue.js 中的数据双向绑定使用了代理模式(Proxy API),通过代理来拦截对象的读写操作,从而实现视图和数据的自动更新。
  • 迭代器模式 * 定义:在不暴露数据类型的情况下访问集合中的数据 * 应用场景:数据结构中有多种数据类型:列表,树等,提供通用操作接口

前端框架中的设计模式:

  • 代理模式

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

总结提升:设计模式并不是万能的

  • 总结出抽象的模式相对比较简单,但是想要将抽象的模式套用到场景中却非常困难
  • 现代编程语言的多编程范式带来的更多可能性
  • 正确做法:真正优秀的开源项目学习设计模式并不断实践