单例模式
小于 1 分钟
单例模式
也叫单体模式,一个类只实例化一次
优点: 节约系统资源, 缺点: 不易扩展,违反单一职责原则
适用场景
当一个类的实例化过程消耗的资源过多,可以使用单例模式来避免性能浪费; 当项目中需要一个公共的状态,那么需要使用单例模式来保证访问一致性;
代码实现:
function Singleton() {
// 如果已存在实例,则返回单例
if (Singleton._instance) return Singleton._instance;
Singleton._instance = this;
}
单例模式赋能方法
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
// 单例模式的赋能方法
function Singleton(FuncClass) {
let _instance;
return new Proxy(FuncClass, {
constructor(target, args) {
return _instance || (_instance = Reflect.constructor(FuncClass, args));
}
});
}