无论从实现还是从理论定义上看,单例模式都是最简单的模式,没有之一。
单例模式顾名思义就是在整个应用中只存在一个对象实例。
使用这种模式一般为了全局共享资源和出于性能考虑减少过多创建实例带来的性能和资源开销。
全局共享资源:
比如全局配置对象,在项目中我们经常用到一些需要全局共享的配置项,比如应用名称、Logo路径、上传文件路径等。
减少性能开销:
比如数据库链接池,链接池对象一般会使用单例模式,这样可以控制创建的数据库链接数,避免不必要的资源消耗。
实现方式一:
按照面向对象的编程思想基于ES2016语法我们可以在JavaScript中这样定义一个单例计数器:
let instance;
let counter = 0;
class Counter {
constructor() {
if (instance) {//这里是为了保证只能实例化一次
throw new Error("You can only create one instance!");
}
instance = this;
}
getInstance() {
return this;
}
getCount() {
return counter;
}
increment() {
return ++counter;
}
decrement() {
return --counter;
}
}
这样写,还不能叫简单到没有之一,在JavaScript中实现单例可以直接用对象字面量。
实现方式2:
let count = 0;
const counter = {
increment() {
return ++count;
},
decrement() {
return --count;
}
};
Object.freeze(counter);//冻结对象防止外部修改
export { counter };
标签:return,前端,counter,模式,instance,let,单例,设计模式
From: https://blog.51cto.com/u_14256460/7402093