Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 싱글톤 열거형을 만드는 방법은 무엇입니까?

<시간/>

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