상세 컨텐츠

본문 제목

[Python Singleton Pattern] Database Singleton Pattern 만들기

Python

by donggyu1998 2021. 9. 27. 01:36

본문

반응형

💡 글 작성자는 vscode를 활용하여 Python을 작성하고있습니다.

 

💡 [싱글턴 패턴]

 

소프트웨어 디자인 패턴에서 싱글턴 패턴을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.

이와 같은 디자인 유형을 싱글턴 패턴이라고 하며, 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다.

 

  1. 애플리케이션이 시작될 때 최초 한번만 메모리를 할당하고(Static) 인스턴스를 만들어 사용하는 디자인 패턴
  2. 싱글톤 패턴은 단 하나의 인스턴스를 생성해서 사용하는 디자인 패턴으로 인스턴스가 필요할 때 똑같은 인스턴스를 만들어 내는 것이 아니라 동일 인스턴스를 사용하게된다.

💡 [싱글턴 패턴 사용하는 이유]

  1. 고정된 메모리 영역을 얻으면서 한 번의 new로 인스턴스를 사용하기 때문에 메모리 낭비 방지 가능
  2. 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터 공유하기 쉽다.
  3. DBCP(Data Base Connection Pool)처럼 공통된 객체를 여러개 사용해서 사용해야하는 상황에서 많이 사용된다.

💡 [실행 화면]

💡 [main 코드]

 

from singleton import SingleTon

def main():
    
    # s = SingleTon
    s = SingleTon.getInstance()
    s.getTempX()    
    s.getTempY()

if __name__ == "__main__":
    main()

💡 [class 코드]

class SingleTon:
    # __instance 변수 None 설정 
    __instance = None
    
    # getInstance = singleton classmethod
    @classmethod
    # cls = class
    def getInstance(cls):
        if cls.__instance == None:
            # instance가 None이면
            cls.__instance = SingleTon() 
            # class 지정
            return cls.__instance
            # 다시 들어왔을 때 None이 아닌 경우를 위해 return

    def __init__(self):
        self._temp_x = 4 
        self._temp_y = 10
        # temp는 4라는 값 지정

    def getTempX(self):
        print(self._temp_x)
        return self._temp_x

    def getTempY(self):
        print(self._temp_y)
        return self._temp_y

 

반응형

관련글 더보기