반응형
싱글턴은 클래스의 인스턴스를 하나만 만들때 사용하는 디자인 패턴이다.
모든 객체에 대해 하나의 공유 상태를 사용.
- 싱글턴을 사용하는 이유
프로그램이 실행되는 동안 인스턴스(클래스의 인스턴스, 리스트,딕셔너리 등) 을 하나만 만들어야 할 때
둘 이상의 인스턴스가 생기면 로직상 에러가 발생하는 등의 이유로 하나만 원할때
- 싱글턴 이 적합한 곳
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
반응형