दिलचस्प पोस्ट
event.wheelDelta रिटर्न अनिर्धारित एक पाठ फ़ाइल जावा की शुरुआत में लेखन जावा / जेएएएसबी: एक विशेषता पर आधारित विशिष्ट उप-वर्ग के लिए यूनमरशॉल एक्सएमएल मैं फ्लास्क अनुरोध के यूआरएल के विभिन्न हिस्सों को कैसे प्राप्त करूं? NHibernate में उलटा गुण जावा में बेनामी कोड ब्लॉक स्वत: पूर्ण दृश्य स्टूडियो में काम नहीं कर रहा है कैफ में एक `पायथन '` परत क्या है? अजगर – कैसे अजगर में एक यूआरएल को मान्य है? (विकृत या नहीं) क्यों मेरा वेब सर्वर सॉफ्टवेयर अस्वीकार करें और अनुरोध हटाएं? शून्य लंबाई का सरणी सी ++ स्ट्रैट सिंटैक्स "a: b" क्या मतलब है C2DM कार्यान्वयन PHP कोड PHP + PDO + MySQL: मैं MySQL से पूर्णांक और संख्यात्मक कॉलम कैसे PHP में integers और numerics के रूप में वापस कर सकता हूँ? पायथन 3: आयातईयर "सेटअप मॉड्यूल नामक कोई मॉड्यूल नहीं"

Singletons वास्तव में है कि बुरा कर रहे हैं?

संभव डुप्लिकेट:
सिंगलटन के बारे में इतना बुरा क्या है?

यह समझ में आता है कि कई मामलों में कई तरह के पैटर्न का दुरुपयोग हो सकता है, और जैसे माँ हमेशा कहती हैं: " बहुत अच्छी चीज हमेशा अच्छा नहीं होती! "

मैं देख रहा हूं कि इन दिनों, मैं अकेलापन का उपयोग कर रहा हूं, और मुझे चिंता है कि मैं खुद डिजाइन पैटर्न का दुरुपयोग कर सकता हूं, और एक खराब अभ्यास की आदत में गहरा और गहराई से चल रहा हो।

हम एक फ्लेक्स अनुप्रयोग विकसित कर रहे हैं जिसमें एक बहुत बड़ा पदानुक्रमित डेटा संरचना स्मृति में रखा गया है, जबकि उपयोगकर्ता उस पर काम करता है। उपयोगकर्ता मांग पर डेटा को लोड, सहेज, बदल और रिफ्रेश कर सकता है।

यह डेटा सिंगलटन क्लास के माध्यम से केंद्रीकृत है, जो कि कुछ अर्रे संकलन, एरेज़, वैल्यू ऑब्जेक्ट्स और कुछ अन्य देशी सदस्य चर को गेटर्स और सेटर्स के माध्यम से उजागर करता है।

आवेदन में कहीं से भी हमारे डेटा का संदर्भ प्राप्त करने के लिए, हम पूरे मॉडल को बनाते हैं.जोलने की पद्धति का तरीका, मुझे यकीन है कि हर कोई इससे परिचित है इससे यह सुनिश्चित होता है कि हम हमेशा डेटा की एक ही प्रति पर अपना हाथ ले लें, क्योंकि जब हमने डिजाइन किया था, हमने कहा था कि आवेदन जीवनकाल के दौरान केवल एक बार इंस्टेंस की अनुमति दी जाती है।

इस केंद्रीय डेटा भंडार से, हमारे लिए उदाहरण के लिए, संपत्ति परिवर्तित होने की घटनाओं को प्रेषित करना आसान है, और कई यूआई घटकों का हो सकता है, जो केंद्रीय डेटा का संदर्भ लेते हैं, उनके प्रदर्शनों को अपडेट करते हैं जो कि हुई हुई डेटा के परिवर्तनों को दर्शाते हैं।

अब तक, यह दृष्टिकोण प्रभावी रहा है और हमारे परिस्थितियों के लिए बहुत ही व्यावहारिक साबित हुआ है।

मुझे हालांकि पता चल रहा है कि नए वर्गों का निर्माण करते समय मैं थोड़ी ओजीर रहा हूं। जैसे प्रश्न एक वर्ग को सिंगलटन होना चाहिए, या इसे किसी अन्य तरीके से प्रबंधित करना चाहिए, जैसे कि कारखाने का उपयोग करना, उदाहरण के लिए, कभी-कभी थोड़ा मुश्किल हो जाता है, कुछ अनिश्चितता के साथ।

मैं सिंगलटन के साथ रेखा कैसे खींगा? सिंगलटन का उपयोग कब और कब से उनसे दूर रहना तय करने के लिए एक अच्छा दिशानिर्देश है

इसके अलावा, कोई भी डिजाइन पैटर्न पर अच्छी किताब सुझा सकता है?

वेब के समाधान से एकत्रित समाधान "Singletons वास्तव में है कि बुरा कर रहे हैं?"

याद करने की महत्वपूर्ण बात यह है कि डिजाइन पैटर्न सिर्फ एक औपचारिक तत्व हैं जो आपको अमूर्त अवधारणाओं को समझने में सहायता करते हैं। एक बार आपके पास यह समझ है कि, विशेष रूप से किसी पुस्तक से "नुस्खा" पर अपने आप को प्रतिबंधित करने के लिए निर्विवाद है और अपने उद्देश्य के लिए सबसे उपयुक्त कोड लिखने की आपकी क्षमता को ठीक करता है।

उसने कहा, जीओएफ जैसी किताबें पढ़ने से आप समस्याओं के बारे में सोचने के लिए और तरीके पेश करेंगे, ताकि जब आपके पास कुछ भी लागू हो जाए, तो आपके पास इस समस्या से निपटने के लिए दृष्टिकोण का व्यापक सेट होगा।

आपके मामले में, यदि सिंगलटन का इस्तेमाल हर मामले में समझ में आता है, तो आगे बढ़ें। यदि यह "सॉर्ट" काफ़ी फिट बैठता है और आपको इसे कुछ सीधा तरीके से लागू करना है, तो आपको एक नए समाधान के साथ आने की जरूरत है एक पैटर्न को मजबूर करना जो बिल्कुल सही नहीं है, कुछ हद तक गोल छेद में एक वर्ग खूंटी को छेड़ने जैसा है

यह देखते हुए कि आप कहते हैं कि "यह दृष्टिकोण प्रभावी रहा है और हमारी परिस्थितियों के लिए बहुत ही व्यावहारिक साबित हुआ है," मुझे लगता है कि आप ठीक कर रहे हैं

यहां कुछ अच्छी किताबें हैं:

चार पुस्तक की गिरोह – डिजाइन पैटर्न के लिए क्लासिक किताब

हेड फर्स्ट डिज़ाइन पैटर्न – मैंने सुना है यह कुछ लोगों द्वारा वैकल्पिक के रूप में सुझाया गया है

हां, सिंगलटन खराब हैं वे बुरे हैं क्योंकि वे जो आपके लिए करते हैं वे दो गुणों को जोड़ती हैं, जिनमें से प्रत्येक का लगभग 95% समय खराब है। (इसका मतलब यह होगा कि औसतन, सिंगलटन 99.75% समय के खराब होते हैं;))

एक सिंगलटन, जिसे गोफ द्वारा परिभाषित किया गया है, एक डेटा संरचना है जो:

  1. एक वस्तु के लिए वैश्विक पहुंच अनुदान, और
  2. बल देता है कि ऑब्जेक्ट के केवल एक इंस्टेंस का अस्तित्व कभी भी हो सकता है।

सबसे पहले आम तौर पर एक बुरी चीज माना जाता है हम विश्व स्तरों को पसंद नहीं करते हैं दूसरा थोड़ा अधिक सूक्ष्म है, लेकिन आम तौर पर, वस्तुतः कोई भी मामला नहीं है जहां यह लागू करने के लिए एक उचित प्रतिबंध है।

कभी-कभी, केवल वस्तु के एक उदाहरण होने का अर्थ समझ में आता है। उस स्थिति में आप केवल एक ही बनाना चाहते हैं। इसे लागू करने के लिए आपको सिंगलटन की आवश्यकता नहीं है।

और आमतौर पर, यहां तक ​​कि जब यह केवल एक उदाहरण के लिए "समझ में आता है", तो यह सब के बाद समझने के लिए नहीं निकलता है। जल्दी या बाद में, आपको एक से अधिक लॉगर की आवश्यकता होगी या एक से अधिक डेटाबेस या फिर आप अपने प्रत्येक यूनिट टेस्ट के लिए संसाधनों को पुन: तैयार करने जा रहे हैं, जिसका मतलब है कि हमें उन्हें वसीयत में बनाने में सक्षम होना है। इससे पहले कि हम परिणामों को समझें, यह समय से पहले हमारे कोड से लचीलेपन को निकाल रहा है

Singletons निर्भरता को छिपाने और युग्मन को बढ़ाने (हर वर्ग संभावित एक सिंगलटन पर निर्भर करता है, जिसका मतलब है कि क्लास को अन्य परियोजनाओं में पुन: उपयोग नहीं किया जा सकता, जब तक कि हम अपने सभी गीतों का पुन: उपयोग न कर दें) और ये निर्भरता तुरंत दिखाई नहीं दे रही है (जैसा फ़ंक्शन / कन्स्ट्रक्टर पैरामीटर ), हम उन्हें ध्यान नहीं देते हैं, और आम तौर पर इसके बारे में सोचते हैं जब हम उन्हें बनाते हैं। सिंगलटन में बस खींचना इतना आसान होता है, यह लगभग स्थानीय वैरिएबल और सभी के रूप में कार्य करता है, इसलिए हम उन्हें वहां एक बार उपयोग करते हैं। और इससे उन्हें फिर से हटाने के लिए लगभग असंभव हो जाता है आप अंत में स्पेगेटी कोड के साथ नहीं, बल्कि स्पेगेटी निर्भरता ग्राफ़ के साथ। और जल्दी या बाद में, आपकी भगोतिय निर्भरता का मतलब होगा कि एकल-बोनस एक-दूसरे के आधार पर शुरू होता है, और तब जब आप को शुरू करने का प्रयास किया जाता है तो आपको परिपत्र निर्भरता मिलती है।

वे इसे यूनिट-परीक्षण के लिए बहुत कठिन बनाते हैं (आप एक समारोह का परीक्षण कैसे करते हैं जो एक एकल ऑब्जेक्ट पर फ़ंक्शन कॉल करता है? हम वास्तविक सिंगलटन कोड का इस्तेमाल नहीं करना चाहते हैं, लेकिन हम इसे कैसे रोकते हैं?

हां, सिंगलटन खराब हैं

कभी-कभी, आप वाकई एक वैश्विक चाहते हैं फिर एक वैश्विक उपयोग करें, एक सिंगलटन नहीं

कभी-कभी, बहुत मुश्किल से ही, आपके पास ऐसी स्थिति हो सकती है जहां क्लास का एक से अधिक उदाहरण बनाना एक त्रुटि है, जहां त्रुटियों के बिना इसे नहीं किया जा सकता। (केवल एक ही मामला के बारे में मैं सोच सकता हूं, और वह भी, जो कि कुछ हार्डवेयर डिवाइस का प्रतिनिधित्व कर रहे हैं, वह भी है। आपके पास केवल एक GPU है, इसलिए यदि आप इसे अपने कोड में ऑब्जेक्ट में मैप करने जा रहे हैं, तो यह अर्थ है कि केवल एक उदाहरण मौजूद हो सकता है) लेकिन अगर आप ऐसी स्थिति में खुद को पाते हैं (और फिर, जोर देने के लिए, ऐसी परिस्थिति जहां कई उदाहरण गंभीर त्रुटियां पैदा करते हैं, न कि एक ऐसी स्थिति जहां "मैं एक से अधिक उदाहरणों के लिए किसी भी उपयोग के मामले नहीं सोच सकता"), फिर लागू करें यह बाधा है, लेकिन वस्तु को विश्व स्तर पर दिखाई देने के बिना भी करते हैं

दुर्लभ मामलों में, इन दो गुणों में से प्रत्येक उपयोगी हो सकते हैं। लेकिन मैं एक एकल मामले के बारे में नहीं सोच सकता जहां उनका संयोजन अच्छी बात होगी।

दुर्भाग्य से, बहुत सारे लोगों को यह विचार मिला है कि "सिंगलटन ओओपी-संगत ग्लोब है" नही, वे नही हैं। वे अभी भी वैश्विक रूप में एक ही समस्याएं पीड़ित हैं, कुछ अन्य, पूरी तरह से असंबंधित लोगों को पेश करने के अलावा । एक सादे पुरानी वैश्विक पर सिंगलटन को पसंद करने का बिल्कुल कोई कारण नहीं है

सॉफ्टवेयर डेवलपर्स बहुत ही समान रूप से दो शिविरों में विभाजित होने लगते हैं, चाहे वे एक आदर्शवादी कोडिंग शैली या एक व्यावहारिक पसंद करते हैं:

  • आदर्शवादी: कभी भी सिंगलटन पैटर्न का उपयोग करें
  • व्यावहारिक: सिंगलटन पैटर्न से बचें

निजी तौर पर, मैं व्यावहारिक दृष्टिकोण का समर्थन करता हूं कभी-कभी यह नियमों को तोड़ने के लिए समझ में आता है, लेकिन तभी आप वास्तव में समझ सकते हैं कि आप क्या कर रहे हैं और संबंधित जोखिमों को स्वीकार करने के लिए तैयार हैं। यदि आप अपने विशिष्ट उपयोग के मामले से संबंधित प्रश्नों के नीचे "हां" का जवाब दे सकते हैं, सिंगलटन पैटर्न कुछ व्यावहारिक लाभ दे सकते हैं।

  • क्या आपके ऐप के लिए सिंगलटन बाहरी है? डेटाबेस, पंक्तिबद्ध सेवाओं, और ईएसबी सभी सिंगलटन पैटर्न के पूरी तरह से मान्य मैक्रो उदाहरण हैं।
  • चुंबन: क्या आप संपूर्ण ऐप 2-3 आंतरिक एकल गीतों तक सीमित हैं?
  • सूखे: क्या ये स्वामित्व वैश्विक रूप से वैश्विक हैं और इसलिए आपके ऐप में लगभग हर वस्तु में संदर्भों को शामिल करना होगा? (जैसे, एक लॉगर या घटक मध्यस्थ)?
  • क्या आपके सिंगलटन केवल एक-दूसरे पर और / या ऑपरेटिंग वातावरण पर निर्भर होते हैं?
  • क्या आपने मेमोरी प्रबंधन विचारों सहित प्रत्येक एकल के लिए उचित स्टार्ट-अप और शट-डाउन अनुक्रम सुनिश्चित किया है? उदाहरण के लिए, एक "ग्रैंड सेंट्रल" शैली थ्रेड पूल को मुख्य () में चलाने () और शटडाउन () तरीके की आवश्यकता हो सकती है ताकि कार्यों को चलाने के लिए गारंटी दी जाती है, जब वे ऑब्जेक्ट पर काम करते हैं जो एक वैध स्थिति में होते हैं।

Singletons कार्यक्रमों को मार नहीं है, प्रोग्रामर कार्यक्रमों को मार।

किसी भी प्रोग्रामिंग के निर्माण की तरह, उचित तरीके से उपयोग किए जाने पर, आप अपने आप को पैर में नहीं शूट करेंगे।

सुझाई गई किताबें ठीक हैं, लेकिन वे हमेशा पर्याप्त पृष्ठभूमि नहीं देते हैं जो उस समय अनुभव के साथ आती हैं जब आप सिंगलटन का उपयोग करने के लिए विकल्प चुन सकते हैं।

यह अनुभव केवल तभी आता है जब सिंगलटन एक बुरा विकल्प होता है जब आपको कई उदाहरण होने की ज़रूरत होती है, और अचानक, आपको ऑब्जेक्ट के संदर्भों को हर जगह हरकत में लेना पड़ता है

कभी-कभी आगे बढ़ना और ऑब्जेक्ट संदर्भों को जगह में रखना बेहतर होता है, लेकिन आप अकेले सिंगलटन का इस्तेमाल कर रहे हैं, इस समस्या की पहचान करने में मदद करता है, अगर आप इसे किसी भिन्न डिज़ाइन में पुन: लागू कराना चाहते हैं। मेरा मानना ​​है कि एक बहुत अच्छी बात है: यानी बस एक कक्षा में सभी (भले ही खराब तरीके से डिजाइन किया गया हो) कक्षा में बदलाव के प्रभाव को देखने की क्षमता देता है।

हमने एक ऐसी परियोजना शुरू की है जहां हम मूल रूप से एक ही प्रश्न का सामना कर रहे हैं, अर्थात, मॉडल का उपयोग कैसे किया जाए, और विशेषकर इसकी मूल तत्व। परियोजना फ्लेक्स ऐप नहीं है, लेकिन एक नाटक! वेब ऐप, लेकिन यह वास्तव में कोई फर्क नहीं पड़ता

प्रणाली में अद्वितीय एक ही वस्तु रखने के ठीक है, समस्या यह है कि इसे कैसे पहुंचा है । इसलिए सिंगलटन के बारे में बहस निर्भरता उलटा (डीआई) की धारणा से संबंधित है, और वस्तुएं कैसे प्राप्त करें।

डी के लिए मुख्य तर्क निम्नलिखित हैं:

  • परीक्षण योग्यता और मजाक
  • उपयोग से ऑब्जेक्ट त्वरण decoupling (जो जीवनचक्र प्रबंधन को जन्म दे सकता है)
  • चिंताओ का विभाजन

डी के लिए संभावित दृष्टिकोण (फ़ॉलर से क्लासिक लेख देखें):

  • विधि मापदंडों के आसपास ऑब्जेक्ट पास करने के लिए
  • सर्विस लोकेटर
  • डि फ्रेमवर्क

इस परिप्रेक्ष्य में, सिंगलटन पैटर्न सिर्फ एक प्रकार का सेवा लोकेटर है, जैसे Model.getInstance()

लेकिन भविष्य में होने वाले बदलावों के मुकाबले अधिकतम लचीलापन प्रदान करने के लिए, अद्वितीय वस्तु का संदर्भ जितना संभव हो उतना ही पारित किया जाना चाहिए, और केवल जब आवश्यक हो तो Model.getInstance() प्राप्त किया Model.getInstance() चाहिए। इससे क्लीनर कोड भी मिलेगा।

मेरी राय में सिंगलटन का उपयोग सीधे एक डिजाइन दोष का संकेत देता है। इसका कारण यह है कि वे किसी को सामान्य ऑब्जेक्ट सृजन और सी + + में निर्मित विनाश तंत्र को बायपास करने की अनुमति देते हैं। यदि किसी ऑब्जेक्ट को किसी अन्य ऑब्जेक्ट के संदर्भ की आवश्यकता होती है, तो इसे या तो निर्माण के आधार पर संदर्भ में भेजना चाहिए या आंतरिक रूप से इसके एक नए इंस्टेंस का निर्माण करना चाहिए। लेकिन जब आप सिंगलटन का उपयोग करते हैं तो आप सृजन और टीडाउन चक्र को स्पष्ट रूप से अस्पष्ट कर रहे हैं। एक संबंधित समस्या यह है कि सिंगलटन के जीवनकाल को नियंत्रित करना बेहद मुश्किल है। नतीजतन, जेनेरिक सिंगलटन लागू करने वाले कई पैकेज में क्लैकी ऑब्जेक्ट लाइफलाइन मैनेजर्स और जैसे भी शामिल हैं। कभी-कभी मुझे आश्चर्य होता है कि ये अकेलेपन का प्रबंधन करने के लिए मौजूद नहीं हैं।

असल में, यदि आपको किसी ऑब्जेक्ट को कई जगहों पर उपयोग करने की आवश्यकता है, तो इसे स्टैक में सबसे अधिक सामान्य बिंदु पर स्पष्ट रूप से बनाया जाना चाहिए और फिर इसे उपयोग करने वाले हर व्यक्ति के संदर्भ से नीचे पार किया जाना चाहिए। कभी-कभी लोग सिंगलटन का उपयोग करते हैं क्योंकि उन्हें नए सूत्रों के लिए एकाधिक तर्कों को पार करने में समस्याएं हैं, लेकिन इसके लिए मत आना, स्पष्ट रूप से अपने धागा तर्क को परिभाषित करें और उन्हें उसी तरीके से नए थ्रेड पर पास करें आप पाएंगे कि आपका कार्यक्रम बहुत क्लीनर में बहता है और स्थैतिक आरंभीकरण निर्भरताओं या गलत टीडाउन के कारण कोई बुरा आश्चर्य नहीं है।

सिंगलाटन निश्चित रूप से बुरा नहीं हैं उनके पास उनके उपयोग हैं, उनमें से कुछ बहुत अच्छे हैं Singletons अनुभवहीन डेवलपर्स द्वारा overused किया जा करने के लिए करते हैं क्योंकि यह अक्सर पहले डिजाइन पट्टी वे के बारे में सीखते हैं, और यह काफी आसान है, तो वे निहितार्थ के बारे में सोच के बिना यह जगह भर में चारों ओर चक।

हर बार जब आप सिंगलटन का उपयोग करना चाहते हैं, तो यह विचार करने का प्रयास करें कि आप यह क्यों कर रहे हैं, और इस पद्धति का उपयोग करने के लाभ और नकारात्मक क्या हैं।

Singletons प्रभावी ढंग से 'सामान' (या तो डेटा या विधियों) का एक वैश्विक सुलभ सेट बनाते हैं और मुझे लगता है कि अधिकांश लोग मानते हैं कि बहुत सारे वैश्विक चर का उपयोग करना एक महान विचार नहीं है कक्षाओं और ऑब्जेक्ट ओरिएंटेशन की सारी बात यह है कि हर चीज को एक विशाल वैश्विक अंतरिक्ष में चकना देने के बजाय असतत क्षेत्रों में चीजों को समूहित करना।

'पैटर्न' में से एक मुझे लगता है कि मैं एक-दूसरे को पसंद करने के लिए पसंद करता हूं, ऊपर से नीचे की वस्तुओं को पास करना होता है मैं उन्हें अपने ऐप इनिशियलाइज़ेशन चरण के दौरान एक बार बना देता हूं, और उन सभी ऑब्जेक्टों के माध्यम से उन्हें पास करता हूं जिनके लिए उन्हें एक्सेस की आवश्यकता होती है। यह एक सिंगलटन पैटर्न के 'एकल-सृजन' भाग की नकल करता है, लेकिन 'वैश्विक' भाग के बिना।

सिंगलटन का पूरा मुद्दा यह है कि यह वस्तुओं के लिए है जहां केवल 1 को कभी भी अस्तित्व में होना चाहिए। आप कक्षाओं के डेटा नियंत्रण सेट का उल्लेख करते हैं। शायद इस बात पर विचार करें कि ऐसे मामलों में एक ऐप डेटा कंट्रोल कक्षाओं के 2 सेट बनाना चाहते हैं, इसलिए शायद एक सिंगलटन को लागू करना बिल्कुल सही नहीं है। इसके बजाय, यदि आपने इन डाटा कक्षाओं को ऐप init में बनाया है, और उन्हें नीचे दिया है, तो आप केवल 1 सेट का निर्माण कर रहे होंगे, क्योंकि आपके वर्तमान ऐप की आवश्यकता है, लेकिन आप इस संभावना को खोलते हैं कि कुछ बिंदु पर, अगर आपको दूसरे सेट की आवश्यकता है आप उन्हें आसानी से बना सकते हैं साथ ही, डेटा नियंत्रण वर्गों को वास्तव में ऐप में कहीं से भी आसानी से ग्लोबिली होना चाहिए। मुझे नहीं लगता है, इसके बजाए उन्हें कम स्तर डेटा एक्सेस परत से केवल पहुंच योग्य होना चाहिए।

कुछ लोगों ने GOF पुस्तक की सिफारिश की है मैं कहूंगा, हां यह एक महान पुस्तक है, लेकिन पहले सामान्य संरचना पर एक पुस्तक का प्रयास करें और पहले, 2/3 / एन-स्तरीय डिजाइन, एनकॅप्सुलेशन, अमूर्त, और इन प्रकार के सिद्धांतों को पहले पढ़ें। यह आपको एक अधिक ठोस आधार देगा जिसके बारे में GOF के बारे में बातों के उचित उपयोग को समझना होगा।

[संपादित करें: दूसरी बार जब एक सिंगलटन संस्करण उपयोगी हो सकता है, जब आप किसी बिंदु तक एक एकल पहुंच बिंदु चाहते हैं, लेकिन कार्यान्वयन विवरण वास्तव में एक से अधिक चीज़ों के लिए हो सकता है कॉल करने वाले को यह जानने की आवश्यकता नहीं है कि कवर के तहत सिंगलटन ऑब्जेक्ट के लिए उनके अनुरोध को वास्तव में कई उपलब्ध ऑब्जेक्ट्स के खिलाफ हल किया जाता है और एक लौटा दिया जाता है। मैं यहाँ एक धागा पूल की तरह कुछ सोच रहा हूँ, जहां इस्तेमाल होता है, अरे, मुझे सिर्फ एक धागा मिल गया, मुझे 1 की ज़रूरत है, लेकिन मुझे कोई परवाह नहीं है)

मुझे पता है कि यह एक पुरानी धागा है, लेकिन ओपी के लिए क्या करने की कोशिश करनी थी, लेकिन वास्तविक स्वरूप का कोई भी उल्लेख नहीं करता। मेरा मानना ​​है कि वह किस प्रकार की आवश्यकता का वर्णन कर रहा है उसे मध्यस्थ पैटर्न कहा जाता है SourceMaking इस तरह की जानकारी को सीखने / संदर्भित करने के लिए एक शानदार साइट है। निश्चित रूप से मेरे पास सॉफ्टवेयर पैटर्न के लिए लोगों को शुरू करने के लिए जगह है। इसके अलावा, यह आम तौर पर एक अच्छा विचार है कि इस धारणा में नहीं खरीदना चाहिए कि किसी भी डिज़ाइन के पैटर्न अनिवार्य रूप से अच्छे या बुरे होते हैं। वे सभी का उपयोग करते हैं, यह केवल सीख रहा है कि उनका उपयोग करने के लिए कब और कहाँ चाल है। जो लोग कभी भी सिंगलटन का उपयोग नहीं करते हैं, उनके लिए, उनकी उपयोगिता समझ में नहीं आते।

नहीं, वे आवश्यक रूप से खराब नहीं हैं

एक किताब के लिए, आपको क्लासिक्स के साथ शुरू करना होगा।

Singletons "कि बुरा" नहीं हैं यदि आपके पास बहुत सारे संबंधित सिंगलाटन हैं और आप किसी फैक्ट्री का उपयोग करके उनमें से कई को बदल सकते हैं / समेकित कर सकते हैं, बिना किसी चीज को खोने के बाद, ऐसा तब होता है जब आपको ऐसा करना चाहिए

किताबों के अनुसार, ठीक है, वहाँ एक कैनन की तरह है ।

मैंने सोचा कि सिंगलटन अच्छे थे ।

Google को आश्वस्त किया जा रहा है कि सिंगलेटन एक बुरा विचार है।

यह सुझाव देना नहीं है कि जो कुछ Google करता है वह सही है या ये कि हर राय किसी भी तर्क का अंत है, लेकिन वे अभी तक इस सिंगलटन डिटेक्टर को उन्हें रूट करने के लिए लिखने के लिए चले गए हैं। स्वयं को मानसिक रूप से तैयार करें।