싱글톤 패턴은 디자인패턴에서 가장 기초적인 패턴으로 먼저 다뤄보도록 하겠습니다.


싱글톤 패턴은 언제나 객체가 한 개인 것을 보장하고, 객체를 메모리에 한번만 올리는 패턴입니다. 여러 곳에서 다른 목적으로 동일한 상태의 객체를 동시에 접근해야 할 때 사용하게 됩니다.

싱글톤 패턴으로 구현한 클래스는 프로그램 어느 곳에서든 전역으로 접근 가능합니다.

어떤 클래스의 인스턴스 개수가 최대 한 개를 넘지 않도록 하는 패턴으로, 이 인스턴스는 공유 자원에 대한 문지기 또는 중앙에 있는 소통의 중심 역할을 하게 됩니. 애플리케이션에서 모든 메소드는 싱글톤을 통해서만 액세스할 수 있습니.

핵심 시스템 함수는 보통 싱글톤을 통해 액세스 하게 됩니다. 예를 들어 자바의 java.lang.Runtime 클래스는 애플리케이션의 실행 환경과의 소통을 위해 쓰이는 싱글톤입니. 전역 변수를 대체하기 위해 싱글톤을 쓰기도 하지만, 싱글톤 패턴을 쓴다고 해서 전역 변수의 전역 상태 문제가 해결되는 건 아니므로 이런 식으로 싱글톤을 사용하는 것을 안티 패턴으로 보는 사람도 많다고 합니다.

 

- 싱글톤이 정적 메소드보다 나은 이유는?

1) 상속과 인터페이스 : 싱글톤은 객체이므로, 기본(Base) 클래스로부터 상속을 받고 인터페이스를 구현할 수 있습니다.

2) 다수 객체로 전환 가능 : 나중에 마음이 바뀌어 (예를 들어 스레드당 하나같은 식으로) 여러 객체를 만들고자 하는 경우에 코드를 많이 바꾸지 않고도 원하는 바를 이룰 수 있습니다. (물론 이렇게 되면 더 이상 싱글톤 패턴을 쓰지 않는 셈이 됩니다.)

3) 동적 바인딩 : 싱글톤을 생성하기 위해 실제로 사용하는 클래스를 컴파일시가 아닌 실행 시(Runtime)에 결정할 수 있습니다.

'Design Pattern' 카테고리의 다른 글

디자인 패턴의 정의와 종류  (2) 2016.04.24
디자인 패턴(Design Pattern)의 목적?  (0) 2016.04.24

WRITTEN BY
SiriusJ

,