728x90
반응형
싱글턴 (singleton)
인스턴스를 오직 하나만 생성할 수 있는 클래스
클래스를 싱글턴으로 만들 시 이를 사용하는 클라이언트를 테스트하기 어려워질 수 있음
싱글턴을 만드는 법
private 생성자
static 멤버가 final 필드인 방식
해당 클래스가 싱글턴임이 명백히 드러남
간결함
정적 팩터리 메서드를 public static 멤버로 제공하는 방식
api 를 바꾸지 않고도 싱글턴이 아니게 변경할 수 있음
제네릭 싱글턴 팩터리로 만들 수 있음
메서드 참조를 공급자로 사용할 수 있음
private 생성자 방식으로 만든 싱글턴 클래스를 직렬화하려면 모든 인스턴스 필드를 일시적이라고 선언하고 readResolve 메서드를 제공하여 직렬화된 인스턴스를 역직렬화 할 때마다 새로운 인스턴스가 만들어지는 것을 예방해야 함
열거 타입
간결하고 추가 작업 없이 직렬화 가능함
복잡한 직렬화나 리플렉션 공격에도 새로운 인스턴스가 생성되는 것을 막아줌
싱글턴이 Enum 외의 클래스를 상속해야 한다면 이 방법은 사용할 수 없음 (열거 타입이 다른 인터페이스를 구현하도록 선언할 수 없음)
728x90
반응형
'📙 > Study' 카테고리의 다른 글
[만들면서 배우는 클린 아키텍처] 01. 계층형 아키텍처의 문제는 무엇일까? (3) | 2024.10.04 |
---|---|
[Effective Java 3/E] Item 5. 의존 객체 주입 (0) | 2021.01.10 |
[Effective Java 3/E] Item 4. private 생성자 (0) | 2021.01.10 |
[Effective Java 3/E] Item 2. 빌더 패턴 (0) | 2021.01.05 |
[Effective Java 3/E] Item 1. 정적 팩터리 메서드 (0) | 2021.01.04 |