[python] 싱글톤 디자인 패턴

싱글톤 디자인 패턴은 객체지향 프로그래밍에서 자주 사용되는 디자인 패턴 중 하나입니다. 이 패턴을 사용하면 어떤 클래스의 인스턴스가 오직 하나만 생성되는 것을 보장할 수 있습니다.

왜 싱글톤을 사용할까요?

싱글톤은 프로그램 내에서 공유해야 하는 자원에 효과적으로 접근할 수 있도록 해줍니다. 예를 들어, 설정 파일이나 로그 파일과 같이 여러 곳에서 접근해야 하는 경우 싱글톤을 사용하면 여러 인스턴스를 생성하지 않고도 일관된 정보에 접근할 수 있습니다.

파이썬에서의 싱글톤 구현 방법

파이썬에서 싱글톤을 구현하는 가장 간단한 방법은 모듈로 구현하는 것입니다. 파이썬에서는 모듈이 한 번만 import되기 때문에 모듈 수준의 변수를 사용하면 싱글톤을 구현할 수 있습니다.

# singleton.py
class Singleton:
    def __init__(self):
        self.data = []

    def add_data(self, value):
        self.data.append(value)

    def get_data(self):
        return self.data

위의 예제에서는 Singleton 클래스를 정의하고, 클래스 내에서 공유할 데이터를 관리하는 data 리스트를 선언합니다. 같은 모듈에서 Singleton 클래스를 사용하면 모두 동일한 인스턴스에 접근하게 됩니다.

# main.py
from singleton import Singleton

obj1 = Singleton()
obj2 = Singleton()

obj1.add_data(1)
obj1.add_data(2)
print(obj2.get_data())  # [1, 2]

위의 예제에서 obj1obj2는 동일한 인스턴스에 접근하게 됩니다. 따라서 obj1이 데이터를 추가하더라도 obj2에서는 동일한 데이터를 얻을 수 있습니다.

정리

싱글톤 디자인 패턴은 공유 자원에 효과적으로 접근할 수 있도록 도와주는 디자인 패턴입니다. 파이썬에서는 모듈을 사용하여 간단하게 싱글톤을 구현할 수 있습니다. 하지만 주의해야 할 점은 싱글톤이 과도하게 사용되면 전역 변수와 같은 문제를 야기할 수 있다는 점입니다. 싱글톤을 사용할 때 적절하게 사용하는 것이 중요합니다.

참고 자료