요약: 싱글턴 패턴을 구현할 때 private 생성자를 사용하거나 열거 타입으로 사용하자.

방법1. public static 멤버가 final 필드인 방식

public Class Elvis{
	public static final Elvis INSTANCE = new Elvis();
	private Elvis(){..}
}

방법2. 정적 팩터리 메서드를 public static 멤버로 제공

public Class Elvis{
	private static final Elvis INSTANCE = new Elvis();
	private Elvis(){..}
	public static Elvis getInstance(){ return INSTANCE; }
}

원소가 하나인 열거 타입 선언

public enum Elvis{
	INSTANCE;
	
	public void ~
}