एकल पैटर्न एक वर्ग की तात्कालिकता को एक वस्तु तक सीमित करता है। इंस्टेंस एक सार्वजनिक स्थिर अंतिम फ़ील्ड . है जो enum . का प्रतिनिधित्व करता है उदाहरण। हम EnumSingleton.INSTANCE . के साथ कक्षा का उदाहरण प्राप्त कर सकते हैं लेकिन अगर हम कार्यान्वयन को बदलना चाहते हैं तो इसे गेटटर में समाहित करना बेहतर है।
जावा में सिंगलटन के रूप में एनम का उपयोग करने के कुछ कारण हैं
- एक उदाहरण की गारंटी (प्रतिबिंब के माध्यम से भी एक से अधिक एनम को इंस्टेंट नहीं कर सकता)।
- थ्रेड-सुरक्षित।
- सीरियलाइज़ेशन।
सिंटैक्स
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