본문 바로가기
Effective JAVA

3. private 생성자나 열거 타입으로 싱글턴임을 보증하라

by 상국이 2021. 8. 22.
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

댓글