싱글톤 패턴은 클래스의 인스턴스화를 하나의 객체로 제한합니다. 인스턴스 공개 정적 최종 필드입니다. 열거 를 나타내는 사례. EnumSingleton.INSTANCE 클래스의 인스턴스를 얻을 수 있습니다. 그러나 구현을 변경하려는 경우를 대비하여 getter로 캡슐화하는 것이 좋습니다.
Java에서 열거형을 싱글톤으로 사용할 수 있는 몇 가지 이유가 있습니다.
- 1개의 인스턴스를 보장합니다(리플렉션을 통해서도 둘 이상의 열거형을 인스턴스화할 수 없음).
- 스레드로부터 안전합니다.
- 직렬화.
구문
public enum Singleton { INSTANCE; private singleton() { } }
예
public enum EnumSingleton { INSTANCE; private String name; private int age; private void build(SingletonBuilder builder) { this.name = builder.name; this.age = builder.age; } public static EnumSingleton getSingleton() { // static getter return INSTANCE; } public void print() { System.out.println("Name: "+name + ", age: "+age); } public static class SingletonBuilder { private final String name; private int age; private SingletonBuilder() { name = null; } public SingletonBuilder(String name) { this.name = name; } public SingletonBuilder age(int age) { this.age = age; return this; } public void build() { EnumSingleton.INSTANCE.build(this); } } public static void main(String[] args) { new SingletonBuilder("Adithya").age(25).build(); EnumSingleton.getSingleton().print(); } }
출력
Name: Adithya, age: 25