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() {...}
}