Classバージョン
export class Singleton {
private static instance: Singleton | null
public static getInstance(): Singleton {
if (Singleton.instance)
return Singleton.instance
Singleton.instance = new Singleton()
return Singleton.instance
}
private constructor() {
}
}
Functionバージョン
function genGetInstanceMethod() {
let instance;
class Singleton {
}
// getInstanceをmethodとして返す
return () => {
// Closureを利用する
if (instance == null) {
instance = new Singleton()
}
return instance
}
}
const getInstance = genGetInstanceMethod()
const i1 = getInstance()
const i2 = getInstance()
console.log(i1 === i2) // true