[Effective Java 3rd] 아이템3 - private 생성자나 열거 타입으로 싱글턴임을 보증하라.

Mr.Sir·2022년 5월 28일
1

Effective Java 스터디

싱글턴

인스턴스를 하나만 생성

생성자를 private 으로 감추고, 접근수단으로는 public static 멤버를 이용.

[첫번째]
public class Elvic {
          public static final Elvis INSTANCE = new Elvis();
          private Elvis() {...}

          public void leaveTheBuilding() {...}
}
[두번째]
public class Elvic {
          private static final Elvis INSTANCE = new Elvis();
          private Elvis() {...}
          public static Elvis getInstance() {
                    return INSTANCE;
          }

          public void leaveTheBuilding() {...}
}

getInstance() 는 항상 같은 객체의 참조를 반환함.

// 싱글턴임을 보장해주는 readResolve 메서드
private Object readResolve() {
          // '진짜' Elvis를 반환하고, 가짜 Elvis는 가비지컬렉터에 맡김.
          return INSTANCE;
}

원소가 하나인 열거타입을 선언하여 싱글턴 생성.

[세번째]
public enum Elvis {
          INSTANCE;

          public void leaveTheBuilding() {...}
}
profile
Deepveloper

0개의 댓글