Programming

Singleton Pattern

Ms_Tony 2017. 12. 7. 16:50

Singleton Pattern


OOP에서 객체는 Class와 Instance를 포함한 개념


Instance란?

  • 객체(Object)를 생성하여 Heap 메모리 영역에 할당된 실체(Stack된 것)를 의미하는 개념.


Singleton이란?

  • 하나의 프로그램 내에서 인스턴스가 사용될 때, 이전에 생성된 인스턴스가 있을 경우 동일한 인스턴스를 생성하는 것이 아닌, 기존에 생성되어 있던 인스턴스를 가져와 사용하는 것을 기본 전략으로 내세운 디자인 패턴이다.

  • 프로그램 상에서 동일한 커넥션 객체를 만든다든지, 하나만 사용되어야 하는 객체를 만들때 유용하다.


Singleton 패턴을 사용하는 이유는?

  • 지정한 클래스 인스턴스가 한개 밖에 존재하지 않는 것을 유지하고 싶을 경우

  • new 키워드를 통해 객체를 생성하게 되면, 생성되는 클래스의 인스턴스가 Heap 메모리 영역으로 올라가게 되고, 그 인스턴스를 가리키고 있는 변수는 Stack 메모리 영역에 생기게 된다.

    • 이렇게 될 경우, 메모리의 낭비가 심해져 누적될 경우 프로세스 처리 시간이 길어질 수 있다.


Singleton 패턴의 단점

  • 프로그램의 Coupling을 높이게 되어 추가 수정의 작업이 있을 경우 사이드 이펙트의 이슈를 가지고 있다.

  • 멀티 쓰레드 응용 프로그램에서 명시적 초기화가 필요한 경우, 쓰레딩 문제를 예방하기 위해 조치를 취해야한다..



참고자료

  • [Java]Singleton이란/사용이유/구현방법 : http://mkil.tistory.com/199