싱글턴은 프로세스가 실행 중에
오직 하나의 객체만 생성되도록 강제하는 패턴이다
class Singleton
{
static instance;
constructor()
{
if (!Singleton.instance)
{
Singleton.instance = this;
}
return Singleton.instance;
}
}
let s1 = new Singleton();
let s2 = new Singleton();
if (s1 === s2)
{
console.log('they are same, Singleton!');
}
else
{
console.log('they are not same');
}
위 코드가 메모리에서 실행되는 모습을 보면
먼저 static 변수인 instance를 선언하고
let s1 = new Singleton();에서 Singleton 객체가 생성되면서
constructor가 실행된다.
Singleton.instance가 null을 가리키고 있으므로
Singleton.instance = this;가 실행되면서
instance는 this인 Singleton객체를 가리키게 된다.
이후 다시 new Singleton()을 하더라도
Singleton.instance가 null이 아니므로 기존에 가리키던 객체를 가리키게 된다.