
안녕하세요.
이번시간에는 싱글톤(Singleton)에 대해 간단하게 알아볼까 해요.
싱글톤(Singleton)
소프트웨어 설계 패턴 중 하나로, 클래스의 인스턴스가 '하나만' 생성되고 재 사용하고 싶을 때 씁니다.
그리고 인스턴스 하나로 전역적인 접근이 가능하도록 하는 패턴입니다.
싱글톤은 주로 설정 정보 관리 객체, 공유 자원 관리 객체, 로그 객체 등에 주로 사용되는 친구예요.
public class Singleton {
// 1. 자신의 인스턴스를 static으로 선언 (오직 하나)
private static Singleton instance;
// 2. 생성자를 private으로 선언 (외부에서 생성 못함)
private Singleton() {}
// 3. 인스턴스를 반환하는 static 메서드 제공
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
싱글톤 구현방법 예시를 간단하게 구연했어요.
그럼 싱글톤의 장단점도 알아볼까요?
싱글톤의 장점
싱글톤은 단 하나의 인스턴스로 전역적인 접근이 가능하기 때문에 메모리를 절약할 수 있어요.
그리고 하나의 인스턴스이므로 어디서든 같은 상태를 공유하기 때문에
인스턴스의 일관성 유지가 또 하나의 장점이죠!
싱글톤의 단점
여러 클래스가 같은 클래스를 공유를 하게 되는 경우가 생기는데요.
그때 하나의 코드를 변경될 때 다른 곳에서도 영향을 미칠 수 있어서 결합도가 증가하는 단점이 존재해요.
그리고 전역 상태로 사용이 되고, 내부적으로 인스턴스를 고정시키기 때문에,
테스트(의존성 주입)가 어렵다는 단점이 또 존재합니다.
| 항목 | 장점 | 단점 |
| 인스턴스 관리 | 메모리 절약, 전역에서 동일 인스턴스 사용 | 상태 공유로 사이드 이펙트 발생 가능 |
| 접근성 | 어디서든 접근 가능 | 의존성 명확하지 않음 |
| 초기화 | 지연 초기화로 성능 최적화 가능 | Eager 방식이면 자원 낭비 가능 |
| 테스트/유지보수 | - | 테스트 어려움, DI 불가 |
싱글톤 장점과 단점을 간단하게 표로 정리해 봤어요.

이렇게 간단하게 싱글톤을 알아봤는데요. 싱글톤의 장단점을 알고 잘 활용한다면,
코드의 일관성과 효율이 높아질 것 같아요.
'Backend > Java' 카테고리의 다른 글
| 프레임워크(Framework) (6) | 2025.07.26 |
|---|---|
| 빌더(Builder) (2) | 2025.07.25 |
| 제네릭 (Generic) (4) | 2025.07.23 |
| Java 기초 테스트 (4) | 2025.07.23 |
| Java의 기초 테스트 1편 - 코딩 해설 (7) | 2025.07.22 |