개발/자바

[java] 싱글턴(Singleton) 패턴 설명 및 코드

조용한닭 2024. 1. 9. 15:27
728x90
반응형

싱글턴(Singleton) 패턴은 객체지향 디자인 패턴 중 하나로, 어떤 클래스가 오직 하나의 인스턴스만을 가지도록 보장하는 패턴입니다.

이 패턴을 사용하면 해당 클래스의 인스턴스를 여러 번 생성하지 않고 하나의 공유 인스턴스를 사용할 수 있습니다.

주로 리소스 공유, 설정 관리, 로깅 등의 상황에서 유용하게 쓰입니다.

싱글턴 패턴을 구현하는 가장 일반적인 방법은 다음과 같습니다.

  1. 생성자를 private으로 만들어 외부에서 객체를 직접 생성하는 것을 막습니다.
  2. 정적 메서드(static method)를 통해 객체를 반환하고, 해당 객체가 없을 경우에만 객체를 생성합니다.
  3. 객체는 처음 생성된 이후에는 항상 같은 객체를 반환합니다.

예시

public class Singleton {

    // 1. 생성자를 private으로 만듭니다.
    private Singleton() {
        // 생성자 코드
    }

    // 2. 정적 메서드를 통해 싱글턴 객체를 반환하고, 객체가 없을 경우에만 생성합니다.
    private static Singleton instance;

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    // 다른 유용한 메서드나 변수들을 추가할 수 있습니다.
    public void doSomething() {
        // 기능 구현
    }
}

위의 코드에서는 Singleton 클래스의 생성자를 private으로 만들어 외부에서 직접 객체를 생성하는 것을 막았고, 정적 메서드인 getInstance()를 사용하여 싱글턴 객체를 얻을 수 있습니다. getInstance() 메서드는 객체가 없을 때만 객체를 생성하고, 이미 생성된 객체가 있다면 그것을 반환합니다.

main 함수

public class Main {
    public static void main(String[] args) {
        Singleton singleton1 = Singleton.getInstance();
        Singleton singleton2 = Singleton.getInstance();

        // 두 객체는 동일한 객체입니다.
        System.out.println(singleton1 == singleton2); // true
    }
}

이 예제에서는 두 번의 getInstance() 호출이 동일한 인스턴스를 반환하므로 singleton1singleton2는 동일한 객체를 참조하게 됩니다.

싱글턴 패턴을 사용하면 애플리케이션 내에서 하나의 공유 인스턴스를 사용하여 자원을 효율적으로 관리하거나 설정 정보를 공유하는 등의 작업을 수행할 수 있습니다.

 

728x90
반응형