본문 바로가기

CS 기술 면접 준비

Singleton Pattern

Singleton Pattern (싱글톤 패턴)

✍️ 객체지향 프로그래밍에서 사용되는 디자인 패턴으로, 특정 클래스의 인스턴스가 오직 하나만 생성되고, 이 인터페이스에 대한 전역적 접근을 제공하는 패턴이다.

 

➡️ 이 패턴은 객체의 수명이 전체 애플리케이션에 걸쳐 유지되어야 할 때 유용하다.

 

  • 자원의 낭비를 막기 위해 필요하다.
    •  예를 들어, 애플리케이션에서 같은 데이터나 설정을 여러 번 생성할 필요가 없을 때 유용하다
  • 중앙 집중식 관리가 필요할 때 필요하다.
    •  예를 들어, 설정 정보나 상태를 중앙에서 관리하고 싶을 때 사용된다.

 

주요 특징

  1. 유일성
    • 시스템에서 해당 클래스의 인스턴스는 오직 하나만 존재해야 한다.
  2. 전역 접근
    • Singleton 객체에 대한 전역 접근 포인트를 제공하여 모든 클라이언트가 이 객체를 쉽게 사용할 수 있도록 한다.
  3. 지연 초기화
    • 필요할 때 인스턴스를 생성하는 방식이 일반적이다.

 

구현 방법

Eager lnitialization : 클래스가 로드될 때 인스턴스를 미리 생성한다.
Lazy lnitialization : 인스턴스가 처음 요청될 때 생성한다.
Double - Checked Locking : 멀티스레드 환경에서 안전하게 인스턴스를 생성하기 위해 사용된다.

 

ex)

Eager lnitialization (즉시 초기화)

class Singleton {  
    static instance = new Singleton();  
    
    constructor() {  
        // ...  
    }  
    
    static getInstance() {  
        return this.instance;  
    }  
}

 

 

Lazy lnitialization (지연 초기화)

class Singleton {  
    static instance;  
    
    constructor() {  
        // ...  
    }  
    
    static getInstance() {  
        if (!this.instance) {  
            this.instance = new Singleton();  
        }  
        return this.instance;  
    }  
}

 

 


정리 📌 (쉽게 정리)

정의 : 하나의 물건이 딱 하나만 존재하도록 만드는 방법

 

필요 이유 

1. 여러 번 같은 물건을 만들지 않아서 자원을 아끼고 싶을 때

2. 모든 사람들이 같은 정보를 쉽게 이용할 수 있도록 관리하고 싶을 때

 

✅ 물건이 필요할 때 한 번만 만들고, 그 후에 그 물건을 계속 사용한다.

 

<참고 사이트>

https://en.wikipedia.org/wiki/Singleton_pattern

 

Singleton pattern - Wikipedia

From Wikipedia, the free encyclopedia Design pattern in object-oriented software development A class diagram exemplifying the singleton pattern. In object-oriented programming, the singleton pattern is a software design pattern that restricts the instantia

en.wikipedia.org

 

728x90
SMALL