सिंगलटन का उपयोग न करें।
विशेष रूप से, सिंगलटन और वैश्विक चर के बीच एकमात्र अंतर यह है कि सिंगलटन एक उदाहरण को लागू करने का प्रयास करता है (उदाहरण के लिए कन्स्ट्रक्टर निजी बनाकर)।
इसके बजाय, निर्माता को सार्वजनिक बनाएं और नए उदाहरणों का उपयोग करके परीक्षण लिखें। अपने वास्तविक कार्यक्रम में, कैनोलिक वैश्विक उदाहरण प्राप्त करने के लिए getInstance()
का उपयोग करें (या एक आईओसी कंटेनर का उपयोग करें)।
और याद रखें कि singletons are pathological liars।
यदि आप अभी भी सिंगलटन के विचार से बहुत सहज हैं, तो कन्स्ट्रक्टर को सार्वजनिक करने के बजाय आप एक सार्वजनिक (और स्थैतिक) फैक्ट्री विधि जोड़ सकते हैं ताकि इस तरह के उदाहरण बनाने के लिए दुर्घटना हो, उदाहरण के लिए:
public static MyClass TEST_CreateInstance() {
return new MyClass();
}
-1, आईएमओ यह एक वास्तविक समाधान देने के लिए खराब स्थिति बना रहा है – orip
+1। मेरा तीसरा पक्ष कोड पर कोई नियंत्रण नहीं है, जो एक सिंगलटन है, और समाधान की आवश्यकता है, इस पर सलाह नहीं दी जाती कि इसे कैसे किया जाना चाहिए। – eis