본문 바로가기
JAVA

[JAVA] 싱글톤(Singleton)이란?

by 개발자신입 2024. 1. 13.
반응형

싱글톤(singleton)이란?

객체의 인스턴스가 오직 1개만 생성되는 패턴

 

싱글톤 디자인 패턴은 자바 프로그래밍에서 매우 중요한 개념 중 하나입니다. 이 패턴은 어플리케이션 내에서 특정 클래스의 인스턴스가 하나만 생성되도록 보장하는 디자인 아키텍처를 제공합니다. 싱글톤은 메모리 사용을 최적화하고, 객체의 재사용을 촉진하여 성능 향상에 기여합니다.

자바에서 싱글톤을 구현하는 가장 일반적인 방법 중 하나는 "Bill Pugh Singleton"이라고도 불리는 내부 정적 클래스를 사용하는 것입니다. 이 방법은 초기화 지연을 통해 성능을 향상시키며, 스레드 안전성도 보장합니다.

public class Singleton {
    private Singleton() {}

    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}



이 예시에서는 private으로 선언된 내부 정적 클래스 SingletonHolder가 사용되어 스레드 안전성을 보장합니다. 또한, 클래스 내부의 private 생성자는 외부에서 직접 인스턴스를 생성하는 것을 방지합니다.

 

싱글톤 장점

1. 메모리 사용을 최적화할 수 있습니다. 어플리케이션 내에서 하나의 인스턴스만 생성되므로 불필요한 중복 객체 생성을 방지합니다.

2. 객체의 재사용이 가능해지므로 성능이 향상됩니다. 특히, 자주 사용되는 리소스를 나타내는 경우 이는 더욱 중요합니다.

 

싱글톤 주의사항

1. 너무 많이 사용하면 코드 유지보수가 어려워질 수 있습니다.

2. 멀티스레드 환경에서 안전하게 구현해야 합니다. 위의 예시처럼 내부 정적 클래스를 사용하거나, 더 간단한 방법으로 synchronized 키워드를 활용하여 메서드나 블록을 동기화하는 방법이 있습니다.

반응형

댓글