본문 바로가기

카테고리 없음

싱글톤이란?

모든 곳에서 접근 가능한 하나의 객체를 의미한다. 비슷한 예로는 전역 변수가 있다. 거의 전역변수랑 비슷하다고 생가하면 될 것 같다.

외부에서 생성 및 소멸할 수 없으며, 객체를 얻는 방법은 오직 getInstance() 뿐이다.

 

싱글톤 패턴이 필요한 상황

1. 전역적으로 접근 가능한 객체가 단 하나만 필요할 때

2. 전역 변수보다는 엄격한 객체가 필요할 때(외부에서의 생성과 소멸이 막힌다는 과정)

 

장점

- 어디에서나 가능

- 매니저급 객체를 쉽게 파악할 수 있음

- 다른 패턴과 혼합하기 쉬움

- 지연 초기화를 사용하므로 필요할 때 딱 한번만 초기화 됨

단점

- SRP를 어김, 코드가 지전분해지고 구조 분석이 어려워짐, 이로 인해 리팩토링을 어렵게 만들 수 있음

- Thread-Safe하게 하려면 쉽지 않음