View on GitHub

programming-study

허원철의 개발 블로그

private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자

하나의 인스턴스만 생성되는 클래스

방법1.

public class Singleton {

    public static final Singleton INSTANCE = new Singleton();

    // ...
}

// Singleton.INSTANCE

방법2.

public class Singleton {

    private static final Singleton INSTANCE = new Singleton();

    public static Singleton getInstance() {
        return INSTANCE;
    }

    // ...
}

// Singleton.getInstance()

자바 초기에는 [방법1.]이 성능상 이점이 있었으나, 근래에는 static 팩토리 메소드를 인라인 코드로 호출하기 때문에 이점이 사라졌다.

장점

  1. API를 변경하지 않고 인스턴스 형태를 바꿀 수 있다.
  2. 항목 27?? 하지만 그다지 유용하지 않음

Serializable

방법3.

```java public enum Singleton { INSTANCE; }