CS 기초 · 기초
싱글톤(Singleton) 패턴은 어떤 상황에서 사용하기 적합하며, 이 패턴을 구현할 때 주의해야 할 점은 무엇인가요?
힌트 · 싱글톤은 전역적으로 단 하나의 인스턴스만 존재해야 할 때 사용합니다. 멀티스레드 환경에서의 동기화 문제와 의존성 주입의 어려움을 고려해야 합니다.
단일 인스턴스전역 접근점상태 유지동시성 문제지연 초기화
모범답안
싱글톤 패턴은 애플리케이션 내에서 특정 클래스의 인스턴스가 오직 하나만 존재해야 하고, 어디서든 그 인스턴스에 접근할 수 있도록 해야 할 때 유용합니다. 예를 들어, 환경 설정 정보 관리, 로깅, 데이터베이스 연결 풀 관리 등에 활용될 수 있습니다.
구현 시 가장 중요한 점은 멀티스레드 환경에서의 동시성 문제입니다. 여러 스레드가 동시에 싱글톤 인스턴스를 생성하려고 시도할 경우, 의도치 않게 여러 개의 인스턴스가 생성될 수 있습니다. 이를 방지하기 위해 synchronized 키워드를 사용하거나, 이른 초기화(eager initialization) 방식을 사용하여 스레드 안전성을 확보해야 합니다.
또 다른 주의점은 싱글톤이 전역 상태를 가지게 되면서 다른 클래스와의 결합도가 높아질 수 있다는 점입니다. 이는 테스트를 어렵게 만들고, 코드의 유연성을 떨어뜨릴 수 있습니다. 따라서 싱글톤 사용을 최소화하고, 의존성 주입 등의 다른 디자인 패턴을 고려하는 것이 좋습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 디자인 패턴 면접 질문
- 소프트웨어 개발에서 디자인 패턴(Design Pattern)이 무엇인지 설명하고, 이를 사용하는 주된 목적은 무엇인가요?
- 팩토리 메서드(Factory Method) 패턴은 언제 사용하며, 이 패턴을 적용했을 때 얻을 수 있는 장점은 무엇인가요?
- 추상 팩토리(Abstract Factory) 패턴은 팩토리 메서드 패턴과 어떻게 다르며, 어떤 종류의 문제를 해결하는 데 효과적인가요?
- 빌더(Builder) 패턴은 복잡한 객체를 생성할 때 어떤 이점을 제공하며, 일반적인 생성자(Constructor) 방식과 비교했을 때의 차이점은 무엇인가요?