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

63 阅读4分钟

一、设计模式分类

设计模式一般可以分为以下几个主要分类:

  1. 创建型模式:这些模式关注对象的创建机制,包括实例化对象的方式,隐藏具体实例化的细节,以及对象的复制等。常见的创建型模式有:单例模式、工厂模式、抽象工厂模式、建造者模式和原型模式等。
  2. 结构型模式:这些模式关注对象和类的组织方式,通过类和对象之间的关联性来建立更大的结构。常见的结构型模式有:适配器模式、装饰者模式、代理模式、桥接模式、组合模式、外观模式和享元模式等。
  3. 行为型模式:这些模式关注对象之间的相互通信和协作方式,涉及到类和对象的职责分配和协调。常见的行为型模式有:观察者模式、策略模式、命令模式、迭代器模式、模板方法模式、状态模式、职责链模式和访问者模式等。

二、浏览器中的设计模式

1. 单例模式

定义:

单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供了一个全局访问点来获取该实例

应用场景:

单例模式在一些需要共享资源、控制访问权限和避免重复创建对象的场景中非常有用,比如数据库连接池、日志记录器、线程池等。但同时也需要注意,单例模式可能会导致代码的耦合性增加,对代码的扩展和测试造成一定的困扰,因此需要在合适的场景下使用。

2. 发布订阅模式

定义:

发布-订阅模式,也被称为观察者模式,是一种常见的软件设计模式。

在发布-订阅模式中,有两个主要角色:发布者和订阅者。

发布者负责发送消息(事件),而订阅者负责接收并处理这些消息。

发布者和订阅者之间解耦,它们相互之间没有直接的依赖关系。发布者只需要将消息发布到一个订阅-发布中心,而不需要知道有哪些订阅者存在。订阅者只需要关注他们感兴趣的消息,并在需要时订阅这些消息。

应用场景:

发布-订阅模式在很多应用场景中都有广泛的应用,比如前端开发中的DOM事件机制、消息队列和事件驱动的架构等。它提供了一种松耦合的方式来处理消息的传递和处理,有效地管理复杂性。

三、前端框架中的设计模式

1. 代理模式

定义:

在前端框架中,代理模式是一种常见的设计模式,用于控制对原始对象的访问。

代理模式有两个主要角色:原始对象和代理对象。

原始对象是实际要被访问和操作的对象,而代理对象充当了一个中间层,提供了对原始对象的间接访问。

应用场景:

在前端框架中,代理模式会与其他设计模式一起使用,如装饰者模式、单例模式等,来实现更复杂的功能和交互。例如,使用代理模式来封装AJAX请求、实现懒加载、对数据进行缓存等。

2. 组合模式

定义:

在前端框架中,组合模式是一种常见的设计模式,用于处理一组对象的层次结构。

组合模式有两种主要角色:树节点和叶节点。

树节点是组合对象的基类,定义了共同的操作和属性,可以包含其他树节点和叶节点。树节点可以是容器节点,用于存储和管理子节点。

叶节点是组合对象的叶子节点,它是最基本的单元,不包含任何子节点。

组合模式通过将树节点和叶节点组合在一起,形成一个层次结构,使得客户端可以统一地访问每个节点,无论是树节点还是叶节点。这样,可以以相同的方式处理整个层次结构,而无需关心节点的具体类型。

应用场景:

在前端框架中,组合模式经常用于构建可嵌套的组件。例如,常见的UI组件库(如React、Vue等)使用组合模式来构建复杂的UI界面。在这种情况下,UI组件可以是树节点,而具体的UI元素(如文本框、按钮等)可以是叶节点。通过组合模式,可以将各种UI元素组合成复杂的界面,同时保持了一致的操作和访问方式。

组合模式通常与其他设计模式一起使用,比如装饰者模式、适配器模式等,以实现更复杂的功能需求。例如,可以使用装饰者模式来给组合对象添加额外的行为,或者使用适配器模式来兼容不同类型的节点。