एकाधिकार शैतान और एकल-गैर-पठनीय / पारस्परिक स्थिति के साथ एकल हैं जो 'वास्तविक' समस्या हैं ...
सिंगलेट्स पढ़ने के बाद पैथोलॉजिकल लियर्स होते हैं जैसा कि जैसन के जवाब में सुझाया गया था, मैं इस छोटे से टीबिट में आया था जो यह बताता है कि सिंगल्सटन का अक्सर दुरुपयोग कैसे किया जाता है।
वैश्विक खराब है क्योंकि:
- ए। यह नामस्थान संघर्ष का कारण बनता है
- ख। यह अपरिवर्तित तरीके से राज्य को उजागर करता है
जब बात सिंगलेट्स की हो
- ए। उन्हें फोन करने का स्पष्ट OO तरीका, टकराव को रोकता है, इसलिए बिंदु a। यह कोई मुद्दा नहीं है
- ख। राज्य के बिना एकल (जैसे कारखाने) कोई समस्या नहीं है। राज्य के साथ सिंगलेट्स फिर से दो श्रेणियों में गिर सकते हैं, जो अपरिवर्तनीय हैं या एक बार लिखते हैं और कई (कॉन्फ़िगरेशन / संपत्ति फ़ाइलें) पढ़ते हैं। ये बुरे नहीं हैं। Mutable Singletons, जो एक तरह के रेफरेंस होल्डर होते हैं, जिनके बारे में आप बोल रहे होते हैं।
आखिरी बयान में वह ब्लॉग के 'सिंगलटन झूठे हैं' की अवधारणा का जिक्र कर रहे हैं।
यह एकाधिकार पर कैसे लागू होता है?
एकाधिकार का खेल शुरू करने के लिए, पहले:
- हम पहले नियमों को स्थापित करते हैं इसलिए हर कोई एक ही पृष्ठ पर है
- खेल की शुरुआत में सभी को एक समान शुरुआत दी जाती है
- भ्रम से बचने के लिए नियमों का केवल एक सेट प्रस्तुत किया गया है
- नियमों को पूरे खेल में बदलने की अनुमति नहीं है
अब, जिन लोगों ने वास्तव में एकाधिकार नहीं खेला है, उनके लिए ये मानक सर्वोत्तम हैं। एकाधिकार में एक हार को निगलना मुश्किल है क्योंकि, एकाधिकार पैसे के बारे में है, अगर आप हार जाते हैं तो आपको श्रमसाध्य रूप से देखना होगा बाकी खिलाड़ियों को खेल खत्म करना होगा, और नुकसान आमतौर पर तेज और कुचलने वाले होते हैं। इसलिए, आमतौर पर कुछ खिलाड़ियों को दूसरों की कीमत पर कुछ खिलाड़ियों के स्वार्थ की सेवा के लिए नियमों को मोड़ दिया जाता है।
तो आप दोस्तों बॉब, जो, और एड के साथ एकाधिकार खेल रहे हैं। आप तेजी से अपने साम्राज्य का निर्माण कर रहे हैं और एक घातीय दर पर बाजार हिस्सेदारी का उपभोग कर रहे हैं। आपके विरोधी कमजोर पड़ रहे हैं और आपको रक्त (लाक्षणिक रूप से) सूंघना शुरू कर देता है। आपके दोस्त बॉब ने अपने सारे पैसे ग्रिडलॉकिंग में उतने ही कम-से-कम मूल्य के गुणों के रूप में डाल दिए, लेकिन उसके निवेश पर उच्च प्रतिफल नहीं मिल रहा है, जिस तरह से आपको उम्मीद थी। बुरा भाग्य के एक स्ट्रोक के रूप में बॉब, आपके बोर्डवॉक पर भूमि और खेल से उत्साहित है।
अब खेल दोस्ताना पासा-रोलिंग से गंभीर व्यवसाय तक जाता है। बॉब को असफलता का उदाहरण बनाया गया है और जो और एड 'उस आदमी ’की तरह खत्म नहीं होना चाहते हैं। तो, आप प्रमुख खिलाड़ी होने के नाते, अचानक, दुश्मन बन जाते हैं। जो और एड एक-से-एक टेबल ट्रेडों, पीछे-पीछे मनी इंजेक्शन, अंडरवैलिड हाउस-स्वैपिंग का अभ्यास करना शुरू करते हैं और आम तौर पर एक खिलाड़ी के रूप में आपको कमजोर करने के लिए कुछ भी करते हैं जब तक कि उनमें से एक ऊपर तक नहीं पहुंच जाता।
फिर, उनमें से एक को जीतने के बजाय, प्रक्रिया शुरू होती है। अचानक, नियमों का एक सीमित सेट एक चलता-फिरता लक्ष्य बन जाता है और खेल सामाजिक संबंधों के प्रकार में गिरावट लाता है जो सर्वाइवर के बाद से हर हाई-रेटेड रियलिटी टीवी शो की नींव रखेगा। क्यों, क्योंकि नियम बदल रहे हैं और इस बात पर कोई आम सहमति नहीं है कि वे कैसे / क्यों / क्या प्रतिनिधित्व करने वाले हैं, और इससे भी महत्वपूर्ण बात यह है कि निर्णय लेने वाला कोई व्यक्ति नहीं है। खेल में प्रत्येक खिलाड़ी, उस समय, अपने खुद के नियम बना रहा है और अराजकता का सामना कर रहा है, जब तक कि दो खिलाड़ी बहुत जल्दी थक नहीं जाते हैं और धीरे-धीरे हार मान लेते हैं।
इसलिए, यदि किसी गेम के लिए एक नियमपुस्तिका एक सिंगलटन का सटीक रूप से प्रतिनिधित्व करती है, तो एकाधिकार नियमपुस्तिका दुरुपयोग का एक उदाहरण होगी।
यह प्रोग्रामिंग पर कैसे लागू होता है?
सभी के बीच स्पष्ट थ्रेड-सेफ्टी और सिंक्रोनाइजेशन के मुद्दों के अलावा, जो परस्पर एकल मौजूद हैं ... यदि आपके पास डेटा का एक सेट है, जो कि कई अलग-अलग स्रोतों द्वारा समवर्ती रूप से पढ़ा / हेरफेर करने में सक्षम है और आवेदन निष्पादन के जीवनकाल के दौरान मौजूद है, यह संभवत: वापस कदम रखने और "मैं यहाँ डेटा संरचना के सही प्रकार का उपयोग कर रहा हूँ" पूछने का एक अच्छा समय है।
व्यक्तिगत रूप से, मैंने एक प्रोग्रामर को एक सिंगलटन को किसी एप्लिकेशन के भीतर किसी प्रकार के मुड़-क्रॉस डेटाबेस स्टोर के रूप में उपयोग करके दुरुपयोग करते देखा है। कोड पर सीधे काम करने के बाद, मैं यह देख सकता हूं कि यह धीमा था (क्योंकि सभी धागे ताले इसे धागा-सुरक्षित बनाने के लिए आवश्यक थे) और एक दुःस्वप्न पर काम करने के लिए (सिंक्रनाइज़ेशन कीड़े के अप्रत्याशित / रुक-रुक कर प्रकृति के कारण), और लगभग 'उत्पादन' स्थितियों के तहत परीक्षण करना असंभव है। निश्चित रूप से, कुछ प्रदर्शन मुद्दों को दूर करने के लिए मतदान / सिग्नलिंग का उपयोग करके एक प्रणाली विकसित की जा सकती थी, लेकिन यह परीक्षण के साथ मुद्दों को हल नहीं करेगा और परेशान क्यों होता है जब एक 'वास्तविक' डेटाबेस पहले से ही अधिक कार्यक्षमता में एक ही कार्यक्षमता को पूरा कर सकता है / स्केलेबल तरीके से।
एक सिंगलटन केवल एक विकल्प है यदि आपको जरूरत है कि एक सिंगलटन क्या प्रदान करता है। किसी वस्तु का केवल एक लेखन-एक उदाहरण। उसी नियम को वस्तु के गुणों / सदस्यों को भी समझना चाहिए।