위로 아래

Singeton 패턴

싱글톤(Singleton) 패턴

  1. 객체의 인스턴스가 오직 1개만 생성되는 패턴
  2. 싱글톤 인스턴스는 전역으로 사용된다.
  3. 생성자가 여러 차례 호출되더라도, 실제로 생성되는 객체는 하나이고, 최초 생성 이후 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴하는 방식.
  4. 공통된 객체를 여러 개 생성해서 사용하는 DBCP(DataBase Connection Pool)과 같은 상황에서 많이 사용된다.
  5. 싱글톤 패턴만을 단독으로 사용하면 객체 지향에 위반될 위험이 높다.
  6. 스프링 컨테이너 같은 프레임워크의 도움을 받으면 문제점들을 보완하면서 장점의 혜택만 살리기 좋다.

 

 

 


Singleton 패턴 사용 이유

  1. 최초 한 번의 new 연산자를 통해 고정된 메모리 영역만을 사용하기 때문에, 메모리 낭비를 방지할 수 있다.
  2. 이미 생성된 인스턴스만 계속 사용하니, 속도가 빠르다
  3. 싱글톤 인스턴스는 전역으로 사용되기 때문에, 다른 클래스의 인스턴스들도 접근할 수 있어서, 다른 클래스 간에 데이터 공유가 쉽다.

 

 

 


Singleton 패턴 문제점

  1. 싱글톤 인스턴스는 자원을 공유하고 있기 때문에, 격리된 환경에서 수행하려면 매번 인스턴스의 상태를 초기화해주어야 해서 테스트하기가 어렵다.
  2. new 키워드를 직접 사용하여 클래스 안에서 객체를 생성하므로, SOLID 원칙 중 DIP와 OCP를 위반할 가능성이 높다. 
  3. 자식 클래스를 만들 수 없다.
  4. 내부 상태를 변경하기 어렵다.
  5. 유연성이 많이 떨어지는 패턴이다.