Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để tạo một enum singleton trong Java?

Singleton mẫu hạn chế việc khởi tạo một lớp cho một đối tượng. INSTANCE trường cuối cùng tĩnh công khai đại diện cho enum ví dụ. Chúng ta có thể lấy phiên bản của lớp với EnumSingleton.INSTANCE nhưng tốt hơn là nên đóng gói nó trong một getter trong trường hợp nếu chúng ta muốn thay đổi cách triển khai.

Có một vài lý do tại sao chúng ta có thể sử dụng enum như một singleton trong Java

  • Bảo đảm một phiên bản (Không thể khởi tạo nhiều phiên bản ngay cả khi phản ánh).
  • An toàn theo chuỗi.
  • Tuần tự hóa.

Cú pháp

public enum Singleton {
   INSTANCE;
   private singleton() {
   }
}

Ví dụ

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();
   }
}

Đầu ra

Name: Adithya, age: 25