본문 바로가기
카테고리 없음

python Singleton

by ByteBridge 2015. 11. 25.
반응형

싱글턴은 클래스의 인스턴스를 하나만 만들때 사용하는 디자인 패턴이다.

모든 객체에 대해 하나의 공유 상태를 사용.


- 싱글턴을 사용하는 이유

프로그램이 실행되는 동안 인스턴스(클래스의 인스턴스, 리스트,딕셔너리 등) 을 하나만 만들어야 할 때

둘 이상의 인스턴스가 생기면 로직상 에러가 발생하는 등의 이유로 하나만 원할때


- 싱글턴 이 적합한 곳

a. 공유 자원에 대한 동시 접근을 제어할 필요가 있을 때

b. 여러 시스템에서 하나의 자원에 접근하는 지점이 필요할 때

c. 유일 객체가 필요할때


- 싱글턴을 사용하는 예

로깅 클래스와 서브 클래스(로그에 메시지를 보내기 위한 로깅 클래스에 대한 글로벌 접근 지점)

프린트 스풀러: 동일 자원에 대한 요청 간섭을 피하기 위해서 하나의 스풀러만 사용

데이터 베이스 연결 관리

파일 관리자

외부 설정 파일에서 정보를 얻거나 저장할때

전역 상태를 담고 있는 읽기전용 싱글턴



class Singleton(object):

_instance = {}

def __new__(cls):
if not hasattr(cls,'instance'):
cls.instance = super(Singleton,cls).__new__(cls)
return cls.instance

요청 하는 모든 코드에 싱글턴 객체를 반환


참고 : 파이썬 디자인 패턴

http://wonjayk.tistory.com/262



반응형