[디자인 패턴] Singleton 패턴

정태경·2023년 10월 14일
post-thumbnail

Singleton 패턴

싱글톤 패턴은 객체 생성에 대한 디자인 패턴 중 하나로 최초 한 번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴이다. 이를 통해 애플리케이션 전체에서 특정한 인스턴스를 공유하여 사용할 수 있다.

싱글톤 패턴을 구현하는 방법은 여러 가지가 있지만, 파이썬을 활용하는 대표적인 방법으로는 클래스 내부에 __new__ 메서드를 오버라이딩하여 인스턴스가 이미 생성되어 있는지 확인하고, 생성되어 있지 않은 경우에만 인스턴스를 생성하도록 구현한다. 이렇게 함으로써 최초 한 번의 인스턴스 생성 이후에는 이미 생성된 인스턴스를 반환하게 된다.

싱글톤 패턴은 전역 변수와 비슷한 개념으로, 애플리케이션 전체에서 해당 인스턴스를 공유하여 사용하게되므로 멀티스레드 구현 시 동시성 이슈가 발생할 수 있다.

예제 코드

class Singleton:
    __instance = None

    def __new__(cls, *args, **kwargs):
        if cls.__instance is None:
            cls.__instance = super().__new__(cls)
        return cls.__instance


class MyClass(Singleton):
    def __init__(self, value):
        self.value = value


a = MyClass(1)
print(a.value)  # 출력 결과: 1
b = MyClass(2)

print(a.value)  # 출력 결과: 2
print(b.value)  # 출력 결과: 2
profile
두나무 업비트 QA 엔지니어

0개의 댓글