[디자인패턴] 싱글턴(Singleton)
2021년 02월 19일, 20:30
생성 패턴 - 싱글턴(Singleton)
- 단 하나의 인스턴스를 사용하고, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
- 장점
- 한번의 인스턴스 생성 후 하나의 인스턴스만 사용하므로 메모리 낭비를 방지 할 수 있음
- 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다
- 단점
- 인스턴스가 너무 많은 일을 하거나 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가 높아짐(개방-폐쇄 원칙 위배)
- 따라서, 테스트와 수정이 어려워짐
- 멀티 쓰레드 환경에서 race condition이 발생 할 수 있음
- 보통, 클래스 안에서 생성자를 private하게하여 내부에서만 호출 될 수 있게하여 아예 class가 초기화되는 시점에 instance를 생성
- 인스턴스가 너무 많은 일을 하거나 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가 높아짐(개방-폐쇄 원칙 위배)