2011년 4월 4일 월요일

[Python] 가장 단순한 싱글톤 패턴(Singletone Pattern)

싱글톤 패턴은 전역변수를 직접 제어하는 형식의 문제점(?)을 보완하기 위해 정말 자주 쓰이는 패턴이다. 보통은 팩토리 패턴(factorypattern)과 결함하여 싱글톤 객체를 넘겨주는 팩토리 메소드를 호출해서 싱글톤 객체를 얻고 이 싱글톤 객체를 엑세스 해서 전역변수를 이용하는 것과 비슷한 효과를 얻을 수 있다.

... 라고 말하고 싶지만 ...

여기서는 Python으로 구현할 수 있는 가장 단순하고 간단한 싱글톤 패턴과 비슷한 예를 기록한다.

모듈을 하나 만들고 여기다 전역변수를 생성하자. 예를 들어 singletone.py라는 파일이 싱글톤 패턴의 몸뚱아리에 해당된다고 치자. 그리고 다음 내용을 코딩했다.
a = 10
b = 5
그리고 싱글톤에 접근하려는 모듈에서는 이런 식으로 사용한다.
import singletone

singletone.a = 20

... 이게 뭐야! 그냥 import해서 쓰는 거잖아! ...

이 방식은 싱글톤의 중요한 기능 중 일부를 배제한 방법일지도 모른다. 하지만 모든 객체 혹은 파일 혹은 함수 든 전역적인 의미에서 접근이 가능하고 프로세스가 살아있는 한 내용이 계속 유지된다는 측면에서 싱글톤의 거의 비슷한 형태가 된다.

팩토리가 생략되어 있는 것 같지만, import를 한다는 것 자체과 팩토리 패턴과 비슷하다고 억지를 부릴 수도 있다. -ㅁ-!!

필요하다면 __init__를 구현하여 생성될 때 해야할 기능을 만들 수도 있고 메소드를 만들어서 직접 제어를 안하도록 권장할 수도 있고 하여간 싱글톤과 거의 비슷하게 쓸 수 있다.

...

별 쓸모 없어 보이는 내용 같지만... 모르다 알게 되었을 때는 굉장히 유용하기도 하니까 -_-;;;;

댓글 1개 :

익명 :

헉!.. 발상의 전환인가요. 재미있게 보았습니다 ㅎㅎ