개요: 회의중, 이런저런 얘길 하다가 메모리 할당 얘기가 나옴. 그 중 코드에 있는 singleton 패턴에 대해 질문하며 새롭게 알게 된 사실을 공부
Singleton
- 클래스 패턴 중 하나로, 하나의 클래스는 하나의 인스턴스만 생성되도록 보장하는 패턴
장점
- 여러 개의 인스턴스가 생성되는걸 방지해, 메모리 할당량을 줄일 수 있다.
예를들어 컴포넌트에 new Date()를 생성해야 한다면,
const now = new Date();
const now2 = new Date();
const now3 = new Date();
console.log(now === now2) // false
위 인스턴스는, new Date() 라는 똑같은 생성자 함수에서 생성되지만, new Date()는 하나의 new Date() 가 아니라, 3개의 new Date()에서 생성되므로 3개의 메모리를 할당한다. (편의상 3개라고 표현)
singleton 패턴을 넣은 코드를 확인하면,
const Singleton = (function() {
let instance;
function createInstance() {
return {
someMethod: function() {
console.log("인스턴스 생성");
}
};
}
return {
getInstance: function() {
if (!instance) {
instance = createInstance();
}
return instance;
}
};
})();
// instance를 생성시 getInstance() 메서드를 이용해 생성
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2) //true
createInstance() 함수로 Singleton 객체를 초기화하고 getInstance() 메서드로 동일한 인스턴스를 반환하게 된다!
결론
singleton 패턴을 잘 이용하면, 동일 형태의 인스턴스는 하나의 메모리를 할당하여 생성할 수 있기 때문에 메모리 할당에 좋은 점이 된다~
'CS' 카테고리의 다른 글
순환 참조 (Circular Dependency) 문제 (0) | 2025.04.14 |
---|---|
pending 이란? (0) | 2024.07.08 |
refreshToken 왜 사용하나요? (0) | 2024.07.05 |
TLS (0) | 2024.05.22 |
OAuth 2.0 프레임워크 (0) | 2024.05.22 |
댓글