设计模式 单例模式
一个类仅有一个实例,并提供一个访问它的全局访问点,这样的模式就叫做单例模式
如何才能保证一个类仅有一个实例?一般情况下,当我们创建了一个类(本质是构造函数)后,可以通过new关键字调用构造函数进而生成任意多的实例对象。
class live{
show() {
console.log('我是单例模式对象')
}
}
const live1 = new live()
const live2 = new live()
console.log(live1 === live2) // false
上面我们先 new 了一个 live1,又 new 了一个 live2,很明显 live1 和 live2 之间没有任何瓜葛,两者是相互独立的对象,各占一块内存空间。而单例模式想要做到的是,不管我们尝试去创建多少次,它都只给你返回第一次所创建的那唯一的一个实例。
实现方法:构造函数具备判断自己是否已经创建过一个实例的能力。我们现在把这段判断逻辑写成一个静态方法
class lives {
show() {
console.log('我是单例模式对象')
}
static getInstance() {
// 判断是否已经new过1个实例
if(!lives.instance) {
// 没有的话就先创建它
lives.instance = new lives()
}
// 如果这个唯一的实例已经存在,则直接返回
return lives.instance
}
}
const lives1 = lives.getInstance()
const lives2 = lives.getInstance()
console.log(lives1 === lives2) // true