📘 private 생성자나 열거타입으로 싱글턴임을 보증하라
싱글톤(Singletone)
: 인스턴스를 오직 하나만 생성할 수 있는 클래스
싱글톤 생성 방법
public static final 필드
: static final 필드를 초기화할 때 딱 한 번만 호출 ▶︎ 해당 인스턴스가 전체 시스템에서 하나뿐
: 해당 클래스가 싱글턴임이 API에 명백히 드러남
: 간결함public static final Smartphone INSTANCE = new Smartphone(); // 이렇게 선언해두고 Smartphone smartphone = Smartphone.INSTANCE; // 이렇게 가져다 씀
정적 팩터리 메서드 멤버 제공
: API를 바꾸지 않고도 싱글턴이 아니게 변경할 수 있음
: 정적 팩터리를 싱글턴 팩터리로 만들 수 있음
: 정적 팩터리의 메서드 참조를 공급자로 사용할 수 있음public static Smartphone getInstance() { return INSTANCE; // 이렇게 메서드로 만들고 } Smartphone smartphone = Smartphone.getInstance(); // 이렇게 가져다 씀
열거 타입 선언
: 간결하고 추가 노력없이 직렬화 가능
: 아주 복잡한 직렬화 상황이나 리플렉션 공격에도 제2의 인스턴스가 생기는 일을 완벽히 막아줌
: 원소가 하나뿐인 열거 타입으로 싱글턴을 만드는 것이 바람직한 방법public enum Smartphone { INSTANCE; // 이렇게 선언하고 } Smartphone smartphone = Smartphone.INSTANCE; // 이렇게 가져다 씀
📚 Enum
- 열거형, 서로 연관된 상수들의 집합
장점
- IDE의 적극적인 지원을 받을 수있음
- 허용 가능한 값 제한 가능
- 리팩토링 시 변경 범위가 최소화
- 데이터들 간의 연관 관계 표현
- 상태와 행위를 한곳에서 분리
item3 파트에서 eum이라는 개념이 나와 조금 상세하게 더 설명을 붙일까 했는데
6장에서 Enum을 상세하게 다루기 때문에 오늘은 개념과 장점 정도만 간략하게 파악하고 넘어가려 한다.