본문 바로가기

java(자바)

[java(자바)] 싱글톤(singletone pattern) _디버깅의 눈물

자바 싱글톤 패턴(Singleton Pattern)은 객체지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로, 하나의 클래스에는 오직 하나의 인스턴스만 생성되도록 보장하는 패턴입니다. 이는 전역적으로 공유하고자 하는 객체를 생성할 때 유용하게 사용됩니다. 보통 데이터베이스 연결 모듈에 많이 사용됩니다.

 

싱글톤 패턴을 구현하는 방법은 다음과 같습니다.

 

 

1.해당 클래스의 생성자를 private으로 선언하여 외부에서 인스턴스를 직접 생성하는 것을 방지합니다.

 

2.해당 클래스의 인스턴스를 저장할 private static 변수를 선언합니다.

 

3.인스턴스를 생성하는 static 메서드를 제공합니다. 이 메서드는 클래스의 인스턴스가 없으면 새로운 인스턴스를 생성하고, 이미 있는 경우 저장된 인스턴스를 반환합니다.

 

 

다음은 자바 코드로 구현된 싱글톤 패턴 예시입니다.

 

 

public class Singleton {
    private static Singleton instance = null;
    
    private Singleton() {
        // private 생성자
    }
    
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

 

 

위 코드에서 getInstance() 메서드는 Singleton 클래스의 인스턴스를 반환합니다. 이 때, instance 변수가 null일 경우에만 인스턴스를 생성하고, 이미 인스턴스가 생성되어 있다면 기존 인스턴스를 반환하게 됩니다.

 

싱글톤 패턴은 다중 스레드 환경에서 안전하게 동작하도록 구현할 필요가 있습니다. 이를 위해 getInstance() 메서드를 동기화(synchronized)하거나, 미리 인스턴스를 생성해놓는 방법 등이 있습니다. 또한, 직렬화(serialization)와 관련된 문제도 고려해야 합니다.