JavaScript设计模式-创建型(概览)

单例模式(Singleton Pattern)

它是指在一个类只能有一个实例,即使多次实例化该类,也只返回第一次实例化后的实例对象。单例模式不仅能减少不必要的内存开销, 并且在减少全局的函数和变量冲突也具有重要的意义。

适用场合:

  1. 当一个类的实例化过程消耗的资源过多,可以使用单例模式来避免性能浪费;
  2. 当项目中需要一个公共的状态,那么需要使用单例模式来保证访问一致性;

工厂模式(Factory Pattern)

工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不同可以分为:简单工厂,工厂方法和抽象工厂。工厂方式的主要思想是将对象的创建与对象的实现分离。

如果你使用过 document.createElement 方法创建过 DOM 元素,那么你已经使用过工厂方法了,虽然这个方法实际上很复杂,但其使用的就是工厂方法的思想:访问者只需提供标签名(如 div、img),那么这个方法就会返回对应的 DOM 元素。

适用场合:

  1. 对象的创建比较复杂,而访问者无需知道创建的具体流程;
  2. 处理大量具有相同属性的小对象;

 

抽象工厂模式

抽象工厂模式并不直接生成实例, 而是用于对产品类簇的创建。

适用场景:

  1. 工厂模式 主要关注单独的产品实例的创建;
  2. 抽象工厂模式 主要关注产品类簇实例的创建,如果产品类簇只有一个产品,那么这时的抽象工厂模式就退化为工厂模式了;

建造者模式/生成器模式(Builder Pattern)

分步构建一个复杂对象,并允许按步骤构造。同样的构建过程可以采用不同的表示,将一个复杂对象的构建层与其表示层分离。

适用场景:

  1. 相同的方法,不同的执行顺序,产生不一样的产品时,可以采用建造者模式;
  2. 产品的组成部件类似,通过组装不同的组件获得不同产品时,可以采用建造者模式;

Reference:

1. 李棠辉的前端路 https://zhuanlan.zhihu.com/c_147301852

2. JavaScript设计模式精讲 https://www.imooc.com/read/38#catalog

猜你喜欢

转载自www.cnblogs.com/lichtung/p/12931902.html