싱글턴(Singleton) 패턴은 객체의 인스턴스를 하나만 생성하여 애플리케이션 전역에서 공유할 수 있도록 설계하는 디자인 패턴입니다. 이 블로그에서는 Java에서의 디자인 패턴 중 싱글턴(Singleton) 패턴 구현하기 방법에 대해 알아 보겠습니다.
1. 싱글턴 패턴이란?
싱글턴 패턴은 다음과 같은 조건을 만족하는 디자인 패턴입니다
이 패턴은 주로 다음과 같은 경우에 사용됩니다
2. 싱글턴 패턴 구현 방법
싱글턴 패턴을 구현하는 방법에는 여러 가지가 있지만, 여기서는 대표적인 세 가지 방법을 소개합니다.
2.1. 기본 싱글턴 구현 (Eager Initialization)
이 방식은 클래스가 로드될 때 인스턴스를 생성하는 방식입니다.
public class Singleton {
// 정적 필드에 인스턴스 생성
private static final Singleton instance = new Singleton();
// private 생성자로 외부 인스턴스 생성 차단
private Singleton() {
}
// 정적 메서드로 인스턴스 반환
public static Singleton getInstance() {
return instance;
}
}
장점
단점
2.2. 지연 초기화(Lazy Initialization)
필요할 때만 인스턴스를 생성하는 방식입니다.
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
장점
단점
2.3. 스레드 안전한 싱글턴 (Thread-Safe Singleton)
멀티스레드 환경에서 안전하게 싱글턴을 구현하는 방법입니다.
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class Singleton {
private static volatile Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
장점
단점
3. 싱글턴 패턴 사용 사례
4. 싱글턴 패턴 사용 시 주의사항
결론
Java에서의 디자인 패턴 중 싱글턴(Singleton) 패턴 구현하는 방법에 대해 알아 보았습니다. 싱글턴 패턴은 객체를 하나만 생성하고 전역적으로 공유할 때 매우 유용한 디자인 패턴입니다.
하지만 잘못된 사용은 테스트 어려움이나 메모리 손실 같은 문제를 만들 수 있으므로, 상황에 맞게 적절히 활용해야 합니다. 위의 구현 방법과 주의사항을 참고하여 실무에서 효율적으로 적용해 보시기 바랍니다.
다음 블로그에서는 Java에서의 Garbage Collection인 메모리 관리의 핵심에 대해 알아 보겠습니다. 감사합니다.
오키나와 나하공항에 도착하거나 돌아가는 길, 바쁜 비행 일정에 쫓겨 허겁지겁 평범한 음식으로 끼니를 대충 때우신…
간사이 여행을 계획 중이신가요? 오사카, 교토, 고베를 아우르는 간사이 지역 여행에서 가장 중요한 필수품이 바로…
일본으로의 여행을 꿈꾸며 설레는 마음으로 출발을 준비할 때, 반드시 잊지 말아야 할 부분이 있습니다. 그것은…
일본여행의 준비 청소년 시기, 가장 많이 꿈꾸는 ‘해외여행’. 그 중에서도 한국에서 가깝고 볼거리·즐길거리도 다양해 많은…