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

50 阅读2分钟

设计模式介绍

软件中常见问题的解决方案模型

  • 历史经验总结

不仅是IT相关专业,工程类的专业都有通过历史经验解决当下问题的情况。

  • 与特定语言无关

设计模式是一种思想,一种编码规范,使用于大部分语言。

设计模式背景

  • 模式语言:城镇、建筑、建造

建筑学中的设计模式,也是强调一种思想。

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

详细介绍了编码中的23种设计模式,并且具有通用性。

设计模式趋势

图中可以看出,互联网行业的快速发展,需要有设计模式的支撑。

gf.png

浏览器中的设计模式

单例模式

见名知义,也就是全局唯一访问对象。又成单一职责模式。

我们常用的windows对象就是一个单例模式,单例模式的应用场景有缓存全局状态管理等。

下面是一个单例模式设计全局缓存的例子:

danli-1.png

danli-2.png

发布订阅模式

一种订阅机制,可在被订阅对象发生变化时通知订阅者,类似于社交网站的关注通知。

从系统架构的解耦,例如MQ,到业务中的一些实现模式,像邮箱订阅上线订阅等。

下面是一个用发布订阅模式实现用户上线订阅的例子:

fabu-1.png

fabu-2.png

JS中的设计模式

原型模式

复制已有的对象来创建新的对象,例如常把一些对象挂载到prototype上。

也是JS中创建对象的基本模式,是一种JS自带的设计模式。

下面是一个用原型模式创建上线订阅中用户的例子:

yuanxin-2.png

yuanxin-1.png

代理模式

可自定义控制对原对象的访问方式,并允许在更新前后做一些额外处理。代理模式在其他语言中也很常用,例如JAVA中的AOP,它的作用就是对原先访问方式进行功能增强

应用场景有:监控,代理工具,前端框架实现等。

下面是一个用代理模式实现用户状态订阅的例子:

daili-1.png

daili-2.png

迭代器模式

在不暴露数据类型的情况下访问集合中的数据,在设计某种数据结构时可运用该思想。

下面是一个设计可迭代组件类的例子:

diedai-1.png

前端框架中的设计模式

代理模式

以Vue前端框架为例,前端框架中对DOM操作的代理。

daili-kj.png

组合模式

可多个对象组合使用,也可单个对象独立使用。

应用场景有:DOM、前端组件、文件目录、部门等。

下面以React组件结构为例:

zuhe.png