मैं साझा कार्यों के लिए स्थिर उपयोगिता कक्षाओं का उपयोग करता हूं जिन्हें कई अलग-अलग संदर्भों से बुलाया जाएगा - उदा। गणित java.util.Math में समान कार्यों के समान है। यह एक उचित पैटर्न है कि ये "शुद्ध" कार्य हैं (यानी किसी भी राज्य में हेरफेर नहीं करते हैं या उनके द्वारा दिए गए पैरामीटर के अलावा किसी अन्य डेटा तक पहुंच नहीं पाते हैं)।
मैं बहुत ही कम अकेले सिंगलेट का उपयोग करता हूं, और विशेष रूप से वैश्विक सिंगलेट से बचने की कोशिश करता हूं। वे वैश्विक चर से जुड़े सभी सामान्य समस्याओं से पीड़ित हैं। वे परीक्षण को कठिन बनाते हैं, और जब तक कि आपका सिंगलटन भी अपरिवर्तनीय न हो, वे वैश्विक स्थिति की समस्याओं का परिचय देते हैं। जब एक दृश्य तुम सिर्फ अगर (वस्तु == END_OF_SEQUENCE_MARKER) का परीक्षण कर सकते traversing
public static final END_OF_SEQUENCE_MARKER=new EndMarker();
तब: उदाहरण के लिए - मुख्य जगह मैं उन्हें उपयोगी पाया है प्रदर्शन हैक्स कि वस्तु पहचान पर निर्भर है। क्योंकि यह एक स्थिर अंतिम संदर्भ है, जेआईटी इसे एक बेहद तेज परीक्षण में बदल देगा ....
- स्टेटिक कारखाने वर्गों आमतौर पर मतलब नहीं है:
संपादित
सिर्फ अपने स्पष्टीकरण, कुछ त्वरित अतिरिक्त टिप्पणियां देखने के बाद। फ़ैक्टरी क्लास का पूरा बिंदु यह है कि आप इसे चालू कर सकते हैं (या उप-वर्ग!), फ़ैक्टरी ऑब्जेक्ट पर कुछ कॉन्फ़िगरेशन परिवर्तन करें, फिर कॉन्फ़िगरेशन के अनुसार ऑब्जेक्ट इंस्टेंस उत्पन्न करने के लिए इसका उपयोग करें। यदि आप इसे स्थैतिक बनाने जा रहे हैं, तो आप पूरी स्थैतिक MyObjectFactory कक्षा होने के बजाय बस एक स्थिर MyObject.create (..) विधि बना सकते हैं ....
- इसी प्रकार, एक अलग सिंगलटन प्रबंधक वर्ग क्यों है ? आमतौर पर सिंगलटन का प्रबंधन करने के लिए सबसे अच्छी कक्षा सिंगलटन कक्षा होती है, क्योंकि आपको आमतौर पर इसे एक निजी कन्स्ट्रक्टर तक पहुंचने की आवश्यकता होगी, मान लीजिए कि आप यह गारंटी देना चाहते हैं कि केवल एक ही उदाहरण बनाया जाएगा। बस एक साधारण स्थैतिक MySingleton.getInstance() विधि होने पर आमतौर पर आपको वह सब कुछ करना होगा जो आपको चाहिए।
यह बहुत अस्पष्ट है ... –
समेकित, हालांकि आप निकट भविष्य में अपने प्रश्नों के साथ थोड़ा अधिक वर्णनात्मक बनना चाहेंगे। :-) –
मुझे लगता है कि स्टैक ओवरफ्लो लोग ऑफ-विषय पर विचार करते हैं। यदि आप अपने प्रश्न की प्रेरणा व्यक्त करते हैं और कुछ वास्तविक जीवन उदाहरण दिखाते हैं, तो शायद उत्तर अधिक केंद्रित हो सकते हैं। अन्यथा, यह शायद एक बहुत व्यापक और व्यक्तिपरक सवाल है। –