위로
아래
Singeton 패턴
싱글톤(Singleton) 패턴
- 객체의 인스턴스가 오직 1개만 생성되는 패턴
- 싱글톤 인스턴스는 전역으로 사용된다.
- 생성자가 여러 차례 호출되더라도, 실제로 생성되는 객체는 하나이고, 최초 생성 이후 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴하는 방식.
- 공통된 객체를 여러 개 생성해서 사용하는 DBCP(DataBase Connection Pool)과 같은 상황에서 많이 사용된다.
- 싱글톤 패턴만을 단독으로 사용하면 객체 지향에 위반될 위험이 높다.
- 스프링 컨테이너 같은 프레임워크의 도움을 받으면 문제점들을 보완하면서 장점의 혜택만 살리기 좋다.
Singleton 패턴 사용 이유
- 최초 한 번의 new 연산자를 통해 고정된 메모리 영역만을 사용하기 때문에, 메모리 낭비를 방지할 수 있다.
- 이미 생성된 인스턴스만 계속 사용하니, 속도가 빠르다
- 싱글톤 인스턴스는 전역으로 사용되기 때문에, 다른 클래스의 인스턴스들도 접근할 수 있어서, 다른 클래스 간에 데이터 공유가 쉽다.
Singleton 패턴 문제점
- 싱글톤 인스턴스는 자원을 공유하고 있기 때문에, 격리된 환경에서 수행하려면 매번 인스턴스의 상태를 초기화해주어야 해서 테스트하기가 어렵다.
- new 키워드를 직접 사용하여 클래스 안에서 객체를 생성하므로, SOLID 원칙 중 DIP와 OCP를 위반할 가능성이 높다.
- 자식 클래스를 만들 수 없다.
- 내부 상태를 변경하기 어렵다.
- 유연성이 많이 떨어지는 패턴이다.