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


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

private 생성자나 열거 타입으로 싱글턴임을 보증하라 - singleton 이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. - 함수와 같은 무상태(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트가 대표적인 예시이다. - 무상태란 상태를 공유하는 필드 변수가 없는 것을 의미한다. 특정 클라이언트가 의존할 수 있는 필드 변수가 존재하면 안 된다. 값을 변경할 수 없어야 하고 가능한 메서드를 이용한 값을 읽기만 할 수 있도록 한다. - 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기 어려워질 수 있다. -> 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글턴이 아니라면 싱글턴 인스턴스를 mock 구현으로 대체할 수 없기 때문이다. 싱글턴 만드는 방식 - 보통 두 가지 방식이다. - 두 방식 모두 생성자는 private로 감춰두고, 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둔다....


#effectivejava #enum #singleton #stateless #static #무상태 #싱글톤 #이펙티브자바 #클래스

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