一、基本写法
class Data{
static instance: Data | null = null
// 设置方法为私有
private constructor() {
}
static getInstance() {
if (!Data.instance) {
Data.instance = new Data()
}
return Data.instance
}
}
二、饿汉
export class Data {
private static instance = new Data();
private constructor() {
// 私有构造函数
}
public static getInstance(): Data {
return Data.instance;
}
}
三、懒汉
class Data{
static instance: Data | null = null
// 设置方法为私有
private constructor() {
}
static getInstance() {
if (!Data.instance) {
Data.instance = new Data()
}
return Data.instance
}
}
四、静态内部类单例
export class Data {
private constructor() {
// 私有构造函数
}
private static class Singleton {
static readonly instance = new Data();
}
public static getInstance(): Data {
return Singleton.instance;
}
}
五、双重检查锁定
export class Data {
private static instance: Data;
private constructor() {
// 私有构造函数
}
public static getInstance(): Data {
if (!Data.instance) {
synchronized(Data) {
if (!Data.instance) {
Data.instance = new Data();
}
}
}
return Data.instance;
}
}