싱글톤 패턴은 클래스의 인스턴스화를 하나의 객체로 제한합니다. 인스턴스 공개 정적 최종 필드입니다. 열거 를 나타내는 사례. 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