싱글톤 패턴은 디자인 패턴 중 하나로, 클래스의 인스턴스가 단 하나만 생성되도록 보장하는 패턴입니다. 전역 변수를 사용하는 것보다 더 안전하며 구조화된 방법으로 객체를 관리하는 데 유용합니다.
장점
1. 제한된 인스턴스 : 인스턴스가 단 하나만 생성되므로 메모리 사용량을 줄일 수 있습니다.
2. 전역 접근 : 앱의 어디에서나 해당 싱글톤 인스턴스에 쉽게 접근할 수 있습니다.
3. 지연 로딩 : 실제로 필요할 때만 인스턴스를 생성할 수 있습니다.
자바스크립트로 싱글톤 구현
const Singleton = (function() {
let instance;
function createInstance() {
const object = new Object("I am the instance");
return object;
}
return {
getInstance: function() {
if (!instance) { // 인스턴스가 이미 존재하는지 확인함
instance = createInstance();
}
return instance;
}
};
})();
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log("Are the instances identical?", instance1 === instance2); // true
즉시 실행 함수 표현식을 사용하여 Singleton 객체를 생성합니다. 이 객체는 getInstance 메소드를 통해 인스턴스에 접근할 수 있습니다. 첫 번째로 getInstance를 호출할 때 인스턴스가 생성되고, 그 이후에는 동일한 인스턴스가 반환됩니다.
주의할 점
1. 멀티스레딩 환경: 자바스크립트는 단일 스레드 환경에서 실행되지만, Node.js와 같은 서버 환경에서는 멀티 스레딩 문제가 발생할 수 있습니다. 이러한 환경에서는 싱글톤 패턴을 사용할 때 추가적인 주의가 필요합니다.
2. 확장성 문제: 싱글톤 패턴은 확장성이 제한될 수 있습니다.
3. 테스트 어려움: 싱글톤 패턴은 테스트하기 어려울 수 있습니다. 전역 상태를 가지고 있기 때문에 다른 테스트 케이스에서 발생한 사이드 이펙트로 인해 테스트가 영향을 받을 수 있습니다.