싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글턴의 전형적인 예로는 무상태 객체, 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 그런데 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다.
싱글턴을 만드는 방법은 3가지가 있다. 첫 번째 방법은 생성자를 private으로 설정을 하고 static final로 설정한 필드를 제공하는 방법이다. static을 사용함으로써 인스턴스를 생성하지 않고 사용할 수 있고 final을 사용함으로써 필드값을 다시 설정하는 것을 막을 수 있다.
public class Single {
public static final Single INSTANCE = new Single();
private Single() {
}
}
두 번째 방법은 정적 팩터리 메서드를 사용하는 것이다. 이 방법은 위에 방법과 비슷한데 차이점은 필드를 private 형태를 사용하고 메서드를 public static을 사용한다는 점이다.
public class Single {
private static final Single INSTANCE = new Single();
private Single() {
}
public static Single getInstance() {
return INSTANCE;
}
}
세 번째 방법은 enum을 사용하는 것이다. enum클래스는 인스턴스를 생성할 수 없기 때문에 싱글톤이 유지가 된다.
public enum SSingle {
INSTANCE
}
'이펙티브 자바' 카테고리의 다른 글
불필요한 객체 생성을 피하라 (0) | 2022.08.24 |
---|---|
자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2022.08.23 |
인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2022.08.22 |
생성자에 매개변수가 많다면 빌더를 고려해라 (0) | 2022.08.15 |
정적 팩토리 메서드 (0) | 2022.08.08 |