싱글턴 패턴(Singleton Pattern) 이란 생성자를 여러 차례 호출해도 실제로 생성되는 객체를 하나로 유지하는 것을 의미합니다. 객체가 최초로 생성된 이후에 생성자나 객체 생성 메서드는 기존에 만들어진 객체를 반환합니다.
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
// 생성자 호출 제한
private Singleton() { ... }
public static Singleton getInstance() {
return INSTANCE;
}
}
싱글턴 패턴의 장단점은 무엇인가요?
싱글턴 패턴은 하나의 객체를 여러 상황에서 재사용할 수 있기 때문에 메모리 낭비를 방지할 수 있습니다. 또한, 여러 다른 객체가 하나의 인스턴스에 쉽게 접근할 수 있어 편리하다는 장점이 있습니다.
하지만, 싱글턴은 전역 객체를 생성한다는 특성상 코드의 복잡도를 높이고, 테스트하기 어려운 코드를 만들 수 있는 단점이 있습니다.
상황에 따라 더욱 복잡한 구현이 필요할 수 있습니다. 예를 들어, 싱글턴 객체를 지연 초기화(lazy initialization) 하고 싶을 때 여러 스레드가 동시에 생성자에 접근하면 두 개 이상의 객체가 생성될 수 있으므로 동시성 문제를 고려해야 합니다.
테스트에서는 싱글턴 객체의 상태를 초기화하는 과정이 필요합니다. 예를 들어, 1번 테스트에서 싱글턴 객체를 수정한 경우, 2번 테스트는 싱글턴의 상태를 초기화한 후 테스트를 실행해야 합니다.
싱글턴 객체가 인터페이스를 구현하지 않은 경우, 테스트 환경에서 가짜 구현체로 대체하여 주입하기 어렵습니다.
'Spring & Backend' 카테고리의 다른 글
| 레이어드 아키텍처란 무엇인가요? (0) | 2025.09.04 |
|---|---|
| 이터러블 프로토콜에 대해 설명해주세요. (0) | 2025.09.03 |
| OOM(Out Of Memory) 발생 경험과 해결 방법 (2) | 2025.09.02 |
| Progressive Partial Rendering(PPR)에 대해서 설명해주세요 (4) | 2025.09.02 |
| XSS 공격이란 무엇이며, 프론트엔드에서 이를 방어하기 위한 방법을 설명해주세요. (0) | 2025.09.02 |
