आपको मॉड्यूलरेशन के लिए सिंगलेट का उपयोग करना चाहिए।
सिंगलटन में निम्नलिखित संस्थाओं की कल्पना कीजिए:
Printer prt;
HTTPInfo httpInfo;
PageConfig pgCfg;
ConnectionPool cxPool;
केस 1। कल्पना कीजिए कि आपने ऐसा नहीं किया है, लेकिन सभी स्थिर फ़ील्ड/विधियों को पकड़ने के लिए एक वर्ग। फिर आपके पास निपटने के लिए स्थिर का एक बड़ा पूल होगा।
केस 2।
आपके वर्तमान मामले में, आपने उन्हें अपने उचित वर्गों में अलग कर दिया लेकिन स्थिर संदर्भों के रूप में। फिर बहुत शोर होगा, क्योंकि हर स्थैतिक संपत्ति अब आपके लिए उपलब्ध है। यदि आपको जानकारी की आवश्यकता नहीं है, खासकर जब बहुत सारी स्थिर जानकारी है, तो आपको कोड के मौजूदा दायरे को अनियंत्रित जानकारी देखने से प्रतिबंधित करना चाहिए।
डेटा अव्यवस्था की रोकथाम रखरखाव में मदद करता है और सुनिश्चित करता है कि निर्भरता प्रतिबंधित हैं। किसी भी तरह से मुझे कोडिंग के वर्तमान दायरे में मेरे लिए क्या उपलब्ध है या उपलब्ध नहीं है, मुझे कोड को अधिक प्रभावी ढंग से मदद करता है।
केस 3 संसाधन पहचान।
सिंगलेट्स संसाधनों की आसान अप-स्केलिंग की अनुमति देते हैं। आइए हम कहें कि अब आपके पास सौदा करने के लिए एक डेटाबेस है और इसलिए, आप अपनी सभी सेटिंग्स को MyConnection क्लास में स्थिर के रूप में रखते हैं। क्या होगा यदि एक समय आया जब आपको एक से अधिक डेटाबेस से कनेक्ट करने की आवश्यकता होती है? यदि आपने सिंगलटन के रूप में कनेक्शन जानकारी को कोड किया था, तो कोड वृद्धि तुलनात्मक रूप से तुलनात्मक होगी।
केस 4 विरासत।
सिंगलटन कक्षाएं खुद को विस्तारित करने की अनुमति देती हैं। यदि आपके पास संसाधनों का एक वर्ग था, तो वे सामान्य कोड साझा कर सकते हैं। मान लीजिए कि आपके पास क्लास बेसिक प्रिंटर है जो सिंगलटन के रूप में तत्काल है। फिर आपके पास लेजर प्रिंटर है जो बेसिक प्रिंटर को बढ़ाता है।
यदि आपने स्थिर साधनों का उपयोग किया था, तो आपका कोड तोड़ देगा क्योंकि आप BasicPrinter.isAlive को LaserPrinter.isAlive के रूप में एक्सेस नहीं कर पाएंगे। फिर कोड का आपका एकल टुकड़ा विभिन्न प्रकार के प्रिंटर प्रबंधित करने में सक्षम नहीं होगा, जब तक कि आप अनावश्यक कोड न रखें।
यदि आप जावा में कोडिंग कर रहे हैं, तो आप अभी भी पूरी तरह से स्थिर सामग्री वर्ग को तुरंत चालू कर सकते हैं और इसके स्थिर गुणों तक पहुंचने के लिए इंस्टेंस संदर्भ का उपयोग कर सकते हैं। अगर किसी को ऐसा करना चाहिए, तो क्यों न सिर्फ एक सिंगलटन बनाओ?
बेशक, सिंगलटन कक्षाओं को विस्तारित करने से उनके मुद्दे इस चर्चा से परे हैं लेकिन उन मुद्दों को कम करने के सरल तरीके हैं।
केस 5 जानकारी भव्यता से बचें। जानकारी के इतने सारे टुकड़े हैं जिन्हें विश्व स्तर पर सबसे बड़े और छोटे पूर्णांक की तरह उपलब्ध कराने की आवश्यकता है। Printer.isAlive को एक दादा बनाने की अनुमति क्यों दी जानी चाहिए? एक भव्य बनाने के लिए केवल एक बहुत सीमित सेट जानकारी की अनुमति दी जानी चाहिए।
एक कहावत है: वैश्विक स्तर पर सोचें, स्थानीय रूप से कार्य करें। समान रूप से, एक प्रोग्रामर को विश्व स्तर पर सोचने के लिए सिंगलटन का उपयोग करना चाहिए लेकिन स्थानीय रूप से कार्य करना चाहिए।
नहीं, बस वैश्विक का उपयोग करें। यदि आपको एक से अधिक की आवश्यकता नहीं है, तो एक से अधिक न करें। – GManNickG