패스잇
CS 기초 · 기초

싱글톤(Singleton) 패턴은 어떤 상황에서 사용하기 적합하며, 이 패턴을 구현할 때 주의해야 할 점은 무엇인가요?

힌트 · 싱글톤은 전역적으로 단 하나의 인스턴스만 존재해야 할 때 사용합니다. 멀티스레드 환경에서의 동기화 문제와 의존성 주입의 어려움을 고려해야 합니다.

단일 인스턴스전역 접근점상태 유지동시성 문제지연 초기화

모범답안

싱글톤 패턴은 애플리케이션 내에서 특정 클래스의 인스턴스가 오직 하나만 존재해야 하고, 어디서든 그 인스턴스에 접근할 수 있도록 해야 할 때 유용합니다. 예를 들어, 환경 설정 정보 관리, 로깅, 데이터베이스 연결 풀 관리 등에 활용될 수 있습니다.

구현 시 가장 중요한 점은 멀티스레드 환경에서의 동시성 문제입니다. 여러 스레드가 동시에 싱글톤 인스턴스를 생성하려고 시도할 경우, 의도치 않게 여러 개의 인스턴스가 생성될 수 있습니다. 이를 방지하기 위해 synchronized 키워드를 사용하거나, 이른 초기화(eager initialization) 방식을 사용하여 스레드 안전성을 확보해야 합니다.

또 다른 주의점은 싱글톤이 전역 상태를 가지게 되면서 다른 클래스와의 결합도가 높아질 수 있다는 점입니다. 이는 테스트를 어렵게 만들고, 코드의 유연성을 떨어뜨릴 수 있습니다. 따라서 싱글톤 사용을 최소화하고, 의존성 주입 등의 다른 디자인 패턴을 고려하는 것이 좋습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 디자인 패턴 면접 질문

← 디자인 패턴 면접 질문 전체 보기