티스토리 뷰
[퍼옴] [Effective Java] private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자
Sh.TK 2017. 7. 14. 16:04이번에 정리하고자하는 내용은 챕터 2의 3항목인 "private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자"이다. 블로그 작성 목적은 복습과 이 책을 다 읽고자하는 다짐으로 시작한다.
1. 싱글톤
디자인 패턴 중 가장 간단하면서도 자주 사용하는 패턴 중 하나이며 하나의 인스턴스만 생성되는 클래스이다.
2. 싱글톤 사용방법
나는 이책에서 예로 설명하는 싱글톤 패턴 중 static 팩토리 메소드 패턴을 자주 사용하고 있으며 이책에서는 세가지의
싱글톤 패턴 방법을 소개하고 있다.
가. public final 필드를 갖는 싱글톤
public class Y2kpooh { public static final Y2kpooh INSTANCE = new Y2kpooh(); private Y2kpooh() { } }
private 생성자는 딱 한번만 호출되어 public static final 필드인 Y2kpooh.INSTANCE를 초기화 한다.
이 방법의 이점은 멤버 필드만 봐도 싱글톤 클래스로 알수 있는 장점은 있다.
나. static 팩토리 메소드를 갖는 싱글톤
public class Y2kpooh { private static final Y2kpooh INSTANCE = new Y2kpooh(); private Y2kpooh() { } public static Y2kpooh getInstance() { return INSTANCE; } }
이 방법의 이점은 클래스에서 반환하는 싱글톤 인스턴스의 형태를 변경할 수 있는 유연성을 제공한다.
위 두 가지 방법으로 구현한 싱글톤 클래스를 직렬화 하기 위해서는 Serializable을 implements해야 하며 싱글톤을 보장받기 위해서는 인스턴스 필드를 transient로 선언해야 하며 readResolve 메소드를 추가해야 한다.
다. 열거형(Enum)싱글톤
public enum Y2kpooh { INSTANCE; public void leaveTheBuilding() {} }
이 방법은 가 항목과 기능적으로는 동일하지만 더 간단하며 앞서 나온 가,나 항목과 다르게 직렬화가 자동으로 지원되고 인스턴스가 여러 개 생기지 않도록 보장하는 장점이 있다.
결론
싱글톤 구현 시 열거형(Enum) 방법이 가장 좋은 방법이다.
출처: http://using.tistory.com/76
'BackEnd > Java' 카테고리의 다른 글
[퍼옴] 자바 여러 패키지 버전 관리(update-altervative) (0) | 2017.09.22 |
---|---|
[퍼옴] 주소를 정규식을 사용하여 필터해보자. (0) | 2017.07.28 |
AES256 암호화시 java.security.InvalidKeyException: Illegal key size 해결법!! (0) | 2017.06.13 |
JPA CascadeType 정리 (0) | 2017.06.09 |
한글 파일명으로 다운로드시 이름이 깨지는 경우..?? (0) | 2017.06.08 |
- spark
- serverless
- 텐서플로우
- TDD
- executor
- python
- AWS
- javascript
- mybatis
- mysql
- Configuration
- tensorflow
- BigData
- 모두의딥러닝
- web
- 머신러닝
- AI
- Java
- ML
- Maven
- Error
- NIO
- 점프투파이썬
- Gradle
- 파이썬
- API
- 중앙정보처리학원
- spring
- memory
- Docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |