[Effective-Java] private 생성자나 열거 타입으로 싱글턴임을 보증하라


[Effective-Java] private 생성자나 열거 타입으로 싱글턴임을 보증하라

싱글턴(Singleton)이란? 인스턴스를 오직 하나만 생성할 수 있는 클래스를 의미한다. 함수를 가지는 무상태 객체, 혹은 시스템 설계 상 유일해야하는 시스템 컴포넌트 등이 싱글턴으로 만들어져야하는 전형적인 예시이다. 스프링 프레임워크에서 Bean Scope 를 지정하지 않고 일반적으로 만드는 Bean이 싱글턴 클래스 중 하나이다. 싱글턴의 단점 싱글턴 클래스를 사용하는 클라이언트를 테스트하기 어려울 수 있다. 싱글턴 클래스가 인터페이스를 구현한 타입일 경우 mock을 만들어 테스트할 수 있지만, 그렇지 않은 싱글턴 클래스는 mock으로 대체가 어렵기 때문이다. 싱글턴 클래스를 만드는 방식 1. public static final 필드로 싱글턴 인스턴스 제공 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { } } private 생성자는 INSTANCE 필드를 초기화할 때 ...


#Java #싱글턴 #싱글턴클래스 #이펙티브자바 #자바 #프로그래밍

원문링크 : [Effective-Java] private 생성자나 열거 타입으로 싱글턴임을 보증하라