सिंगलटन क्लास: सिंगलटन क्लास वह वर्ग है जिसमें प्रति वर्ग लोडर केवल एक ही उदाहरण मौजूद हो सकता है।
स्टेटिक/हेल्पर क्लास (केवल स्थिर फ़ील्ड/विधियों वाला वर्ग): इस वर्ग का कोई उदाहरण मौजूद नहीं है। केवल फ़ील्ड और विधियों को सीधे स्थिरांक या सहायक तरीकों के रूप में उपयोग किया जा सकता है।
इस blog "Static classes in Java" से संदर्भित किया गया है इसे अच्छी तरह से वर्णन करता है। ब्लॉग भी एक ही स्पष्टीकरण के लिए उदाहरण है:
सिंगलटन उदाहरण:
public class ClassicSingleton {
private static ClassicSingleton instance = null;
private ClassicSingleton() {
// Exists only to defeat instantiation.
}
public static ClassicSingleton getInstance() {
if (instance == null) {
instance = new ClassicSingleton();
}
return instance;
}
}
स्टेटिक कक्षा उदाहरण:
/**
* A helper class with useful static utility functions.
*/
public final class ActionHelper {
/**
* private constructor to stop people instantiating it.
*/
private ActionHelper() {
// this is never run
}
/**
* prints hello world and then the users name
*
* @param users
* name
*/
public static void printHelloWorld(final String name) {
System.out.println("Hello World its " + name);
}
}
तो दो उदाहरण के बीच अंतर क्या है और क्यों कर रहा लगता है कि दूसरा समाधान उस वर्ग के लिए बेहतर है जिसे आप नहीं चाहते हैं या तुरंत चालू करने की आवश्यकता है। यदि आप कक्षा के एक उदाहरण बनाना चाहते हैं तो सबसे पहले सिंगलटन पैटर्न बहुत उपयोगी है। मेरे सहायक वर्ग के लिए हम वास्तव में कक्षा की किसी प्रतिलिपि को तुरंत चालू नहीं करना चाहते हैं। सिंगलटन क्लास का उपयोग क्यों नहीं करना चाहिए क्योंकि इस सहायक वर्ग के लिए हम किसी भी चर का उपयोग नहीं करते हैं। सिंगलटन वर्ग उपयोगी होगा यदि इसमें चर के एक सेट को शामिल किया गया था, जिसे हम केवल एक सेट चाहते थे और विधियों ने उन चर का उपयोग किया था, लेकिन हमारे सहायक वर्ग में हम पास किए गए लोगों के अलावा किसी भी चर का उपयोग नहीं करते हैं (जिसे हम अंतिम बनाते हैं) । इस कारण से मुझे विश्वास नहीं है कि हम एक सिंगलटन इंस्टेंस चाहते हैं क्योंकि हम किसी भी चर नहीं चाहते हैं और हम नहीं चाहते कि कोई भी इस वर्ग को तुरंत चालू कर दे। इसलिए यदि आप नहीं चाहते हैं कि कोई भी कक्षा को तुरंत चालू कर दे, जो आम तौर पर आपके पास कुछ प्रकार की सहायक/यूटिल क्लास है, तो मैं उस स्टैटिक क्लास को कॉल करता हूं, जो एक निजी कन्स्ट्रक्टर वाला वर्ग है और केवल बिना किसी स्टेटिक विधियों के कोई चर
एक ही जवाब भी मेरा उत्तर here
http://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern – oksayt
डुप्लीकेट की तरह लगता है अगर आपको वह जानकारी मिलती है जो आपको प्राप्त जानकारी के रूप में स्वीकार करने के लिए भूल जाते हैं .. –
जांचें http://stackoverflow.com/a/37114702/1406510 – nanosoft