约 650 字大约 2 分钟

2022-04-18

提问

  1. javascript 有哪些常用的设计模式?
  2. 简单说一下你知道的设计模式

常用的设计模式如:

  • 单例模式
  • 工厂模式
  • 策略模式
  • 代理模式
  • 中介者模式
  • 装饰者模式
  • 观察者模式

单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

实现方法是,先判断实例是否存在,如果不存在就创建后返回,如果存在就直接返回。

工厂模式

工厂模式是一种创建型的模式,主要是 提供一个通用的接口来创建对象。

适用于 当对象或组件设置涉及搞复杂性,或者需要根据所在的不同环境生层对象的不同实例, 或者处理很多共享相同属性的小型对象或组件 等场景。

策略模式

将方法的实现和方法的调用分离开来,其中方法的实现是可互相替换的,可以通过相同的方式进行调用。

代理模式

为一个对象提供一个代用品或占位符,以便控制对它的访问。

比如说常见的事件代理。

中介者模式

多个对象通过一个中介者进行交流,而不是直接进行交流,这样能够将通信的各个对象解耦。

装饰者模式

在不改变对象自身的基础上,在程序运行期间给对象动态地添加方法。

适用于: 原有方法维持不变,在原有方法上再挂载其他方法来满足现有需求; 函数的解耦,将函数拆分成多个可复用的函数,再将拆分出来的函数挂载到某个函数上,实现相同的效果但增强了复用性。

观察者模式

一个被称作被观察者的对象,维护一组被称为观察者的对象,这些对象依赖于被观察者,被观察者自动将自身的状态的任何变化通知给观察者。

当一个被观察者需要将一些变化通知给观察者的时候,它将采用广播的方式,这条广播可能包含特定于这条通知的一些数据。

当特定的观察者不再需要接受来自于它所注册的被观察者的通知的时候,被观察者可以将其从所维护的组中删除。