Backend/Java

싱글톤 (Singleton)

개발자의 첫 걸음 2025. 7. 24. 10:00

 

안녕하세요.

 

이번시간에는 싱글톤(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