English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

كيفية إنشاء سنغلتون إnumerique في Java؟

يحد من إنشاء النماذج لفئة واحدة فقط نموذج INSTANCE هو حقل عام ثابت ونهائي يمثل نموذج الفئة. يمكننا استخدام EnumSingleton.INSTANCE للحصول على نموذج الفئة، ولكن إذا أردنا تغيير التنفيذ، من الأفضل تضمينه في getter.

هناك بعض الأسباب التي يمكن استخدامها لاستخدام الحسابات في Java

  • يضمن وجود نموذج واحد فقط (حتى لو حاولت إنشاء أكثر من نموذج بواسطة الت反射).

  • آمن من حيث التوازي

  • الترميز

اللغة

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

نتائج الإخراج

الاسم: Adithya، العمر: 25