본문 바로가기
CS

Singleton 이란

by 갈잃자 2024. 7. 8.

개요: 회의중, 이런저런 얘길 하다가 메모리 할당 얘기가 나옴. 그 중 코드에 있는 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

댓글