[Design Pattern] 싱글톤 패턴 더 알아보기 - 5

enum Singleton

이 방법은 enum을 이용한 싱글톤이다. enum을 이용한 싱글톤은 다양한 장점이 많다.

  1. 간단하다.
  2. 직렬화를 스스로 해결한다. 일반 싱글톤은 직렬화시 자신을 복제하기 때문에 추가적인 코드 작성이 불가피하다.
  3. 리플렉션에도 안전하다.

하지만 단점도 존재한다. enum은 태생상 이른 초기화 방식이라는 것이다. 다음은 enum을 통해 싱글턴을 구현한 예이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public enum EnumInitializationSingleton {
INSTANCE;
private final ConcurrentLinkedQueue<Integer> queue;

private EnumInitializationSingleton() {
queue = new ConcurrentLinkedQueue<>();
}

public void push(int val) {
queue.add(val);
}

public int pop() {
return queue.remove();
}
}
Author: Song Hayoung
Link: https://songhayoung.github.io/2020/08/13/Design%20Pattern/IntermediateSingleton5/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.