前端框架中的设计模式 | 青训营

72 阅读3分钟

什么是设计模式

概念:设计模式是软件设计中常见问题的解决方案模型、

设计模式分类

  • 创建型--如何创建一个对象
  • 结构型--如何灵活的将对象组装成较大的结构
  • 行为型--负责对象之间的高效通信和职责划分

前端场景下常见的设计模式

单例模式

单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。

应用场景:全局缓存 全局状态管理

// 单例构造器
const FooServiceSingleton = (function () {
  // 隐藏的Class的构造函数
  function FooService() {}

  // 未初始化的单例对象
  let fooService;

  return {
    // 创建/获取单例对象的函数
    getInstance: function () {
      if (!fooService) {
        fooService = new FooService();
      }
      return fooService;
    }
  }
})();

观察者模式

观察者模式(Observer Pattern):定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,其依赖的对象会自动收到通知。

应用场景:当数据模型发生改变时,可以使用观察者模式通知视图进行更新。

工厂模式

工厂模式(Factory Pattern):定义一个用于创建对象的接口,由子类决定实例化哪个类。

应用场景:根据用户的操作来创建不同类型的组件对象。

适配器模式

适配器模式(Adapter Pattern):将一个类的接口转换成客户端所期望的另一个接口,使原本不兼容的类能够一起工作。

应用场景:为了兼容不同浏览器的差异,可以使用适配器模式来统一接口。

策略模式

策略模式(Strategy Pattern):定义一系列算法,将它们封装起来,并使它们可以互相替换,使算法的变化独立于使用算法的客户。

应用场景:根据用户的操作来选择不同的数据处理策略。

命令模式

命令模式(Command Pattern):将请求封装成对象,使得可以用不同的请求对客户进行参数化,同时支持请求的排队和记录日志。

应用场景:可以使用命令模式实现撤销、重做等操作。

装饰者模式

装饰者模式(Decorator Pattern):动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

应用场景:可以使用装饰者模式来给组件对象添加附加的行为。

责任链模式

责任链模式(Chain of Responsibility Pattern):将请求的发送者和接收者解耦,使多个对象都有机会处理该请求,直到其中一个对象处理它为止。

应用场景:可以使用责任链模式处理用户的请求。

建造者模式

建造者模式(Builder Pattern):将一个复杂对象的构建过程与其表示分离,使同样的构建过程可以创建不同的表示。

应用场景:可以使用建造者模式创建复杂的视图组件。

桥接模式

桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使它们都可以独立地变化。

应用场景:可以使用桥接模式将视图的外观和实现分离开来。