반응형

싱글톤 패턴(Singleton Pattern)

싱글톤 패턴(Singleton Pattern)은 특정 클래스의 인스턴스가 단 하나만 존재하도록 보장하고, 그 인스턴스에 대한 전역적인 접근 방법을 제공하는 디자인 패턴입니다. 주로 전역 객체가 필요한 경우(예: 데이터베이스 연결, 설정 관리 등)에 사용됩니다.

1. Java 예제

java

public class Singleton {
    // 클래스 내부에 인스턴스를 저장
    private static Singleton instance;

    // 외부에서 인스턴스화 금지
    private Singleton() {}

    // 인스턴스가 없다면 생성하고, 이미 있으면 그 인스턴스를 반환
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

2. Python 예제

python

class Singleton:
    _instance = None

    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
        return cls._instance

# 사용 예시
singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2)  # True

3. C++ 예제

cpp

#include <iostream>

class Singleton {
private:
    static Singleton* instance;

    // 생성자를 private으로 지정해 외부에서 인스턴스화 못하게 함
    Singleton() {}

public:
    // 인스턴스를 반환하는 정적 함수
    static Singleton* getInstance() {
        if (!instance) {
            instance = new Singleton();
        }
        return instance;
    }
};

// 초기화
Singleton* Singleton::instance = nullptr;

// 사용 예시
int main() {
    Singleton* singleton1 = Singleton::getInstance();
    Singleton* singleton2 = Singleton::getInstance();
    std::cout << (singleton1 == singleton2) << std::endl;  // 1 (true)
    return 0;
}

4. JavaScript 예제

javascript

class Singleton {
    constructor() {
        if (!Singleton.instance) {
            Singleton.instance = this;
        }
        return Singleton.instance;
    }
}

const singleton1 = new Singleton();
const singleton2 = new Singleton();
console.log(singleton1 === singleton2);  // true

5. Kotlin 예제

kotlin

object Singleton
// object 키워드를 사용한 Singleton 객체는 코틀린 컴파일러가 자동으로 단일 인스턴스를 생성

fun main() {
    val singleton1 = Singleton
    val singleton2 = Singleton
    println(singleton1 === singleton2)  // true
}

위의 각 예제 코드에서 보듯이, 싱글톤 패턴은 클래스의 인스턴스 생성을 제어하여 단일 객체만 생성하는 방식입니다.

728x90
반응형

+ Recent posts