2018-4-12 싱글턴패턴

Java Design Pattern - Singleton Pattern

싱글턴 패턴이란?

싱글턴 패턴이란 인스턴스를 하나만 만들어 사용하기 위한 패턴이다.

  • 인스턴스를 여러개 만들 경우 불필요한 자원을 사용을 하게되므로 낭비를 하게된다. 싱글턴 패턴은 인스턴스를 한개만 생성을 하고, 그것을 계속 재사용을 한다.

싱글턴 패턴의 3가지 조건

  1. new를 실행할 수 없도록 생성자에 private 접근제어자를 지정
  2. 유일한 단일 객체를 반환할 수 있는 정적 메소드가 필요
  3. 유일한 단일 객체를 참조할 정적 참조변수 필요
public class Singleton {
    static Singleton singletonObject; //정적 참조 변수

    private Singleton() { }; // private생성자

    // 객체 반환 정적 메소드
    public static Singleton getInstance() {
        if (singletonObject == null)
            singletonObject = new Singleton();
        return singletonObject;
    }
}

class Client {
    public static void main(String[] args) {
        // private생성자라서 new를 통해 인스턴스를 생성할 수 없다.
        // Singleton s = new Singleton();
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        Singleton s3 = Singleton.getInstance();

        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);

        s1 = null;
        s2 = null;
        s3 = null;
    }
}
//result
Singleton@60e53b93
Singleton@60e53b93
Singleton@60e53b93

  • 단일 객체인 경우 결국 공유 객체로 사용되기 때문에 속성을 갖지 않는다. 위 예제를 통해서 s1, s2, s3가 단일객체를 참조한다는 것을 알 수 있다.

싱글턴 패턴의 특징

  1. private생성자를 갖는다.
  2. 단일 객체 참조변수를 정적 속성으로 갖는다.
  3. 단일 객체 참조변수가 참조하는 단일 객체를 반환하는 getInstance()정적 메소드를 갖는다.
  4. 쓰기 속성을 갖지 않는다.

싱글턴 패턴은 클래스의 인스턴스, 즉 객체를 하나만 만들어서 사용하는 패턴이다.

Written on April 12, 2018