728x90
- 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기 어려워질 수 있다.
싱글턴을 만드는 방식
1. 생성자를 private로 감춰두고 인스턴스에 접근할 수 있는 수단으로 public static 맴버를 하나 생성한다.
public class Coffee{
public static final Coffee INSTANCE = new Coffee();
private Coffee(){...}
public void leaveTheBuilding(){...}
}
2. 정적 팩터리 메소드를 public static 맴버로 제공
public class Coffee{
private static final Coffee INSTANCE = new Coffee();
private Coffee(){...}
public static Coffee getInstance(){ return INSTENCE; } //요기
public void leaveTheBuilding(){...}
}
3. 원소가 하나인 열거 타입을 선언하는 것
public enum Coffee{
INSTANCE;
public void leaveTheBuilding(){...}
}
대부분의 상황에서는 원소가 하나뿐인 열거 타입이 싱글턴을 만드는 가장 좋은 방법이다.
단, 만들려는 싱글턴이 Enum외의 클래스를 상속해야 한다면 이 방법은 사용할 수 없습니다.
* 이 글은 Effective Java를 공부하며 작성한 글입니다.
728x90
'Effective JAVA' 카테고리의 다른 글
4. 인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2021.08.22 |
---|---|
2. 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2021.08.22 |
1. 생성자 대신 정적 팩토리 메서드를 고려하라 (0) | 2021.08.22 |
댓글