싱글톤 생성자 패턴 카테고리에 속한다. 시스템 로깅, 어플리케이션 설정에서 사용
한 인스턴스에 관리하고 애플리케이션 내에서 전역적으로 접근할 수 있도록 한다.
constructor 생성자는 private, new를 사용하면 항상 새로운 오브젝트가 생성된다.
하지만 싱글톤은 contructor에 대한 직접적인 접근을 방지한다.
클라이언트가 인스턴스를 접근할 때는 static을 사용해서 접근을 해야한다.
클라이언트가 추가가 되더라도 같은 instance를 가져온다.
class Singleton{
constructor(){
if (Singleton.instance){ //인스턴스가 애플리케이션 스코프에 이미 존재 하냐 안하냐 체크
return console.warn("Warning: Singleton class already instantiated");
}
Singleton.instance = this;
this.version = Date.now();
this.config = "test";
}
static getInstance() { //인스턴스 access 포인트
if(!this.instance){
this.instance = new Singleton();
}
return this.instance;
}
}
// 1. 하나의 객체 인스턴스만 존재
const s1 = Singleton.getInstance();
console.log(s1);
const s2 = Singleton.getInstance();
console.log(s2);
정리하자면 싱글톤은 하나의 객체 인스턴스만 존재하고
이 싱글턴 오브젝트에 접근할 때는 스태틱 함수를 사용 하여야 한다.
하나의 인스턴스에서 리소스를 관리할 수 있다는 장점이 있다.
코드를 중복을 방지할 수 있다. getInstance static을 사용해서 앱 전역에서 접근할 수 있다.