सरल तरीका सिर्फ उस चीज को बनाना है जो कभी हुआ करती थी Singleton<T>
एक वैश्विक हुआ करती T
थी। ग्लोबल्स की समस्याएं भी हैं, लेकिन वे एक तुच्छ बाधा को लागू करने के लिए अतिरिक्त काम और बॉयलरप्लेट कोड के एक समूह का प्रतिनिधित्व नहीं करते हैं। यह मूल रूप से एकमात्र समाधान है जो इकाई निर्माणकर्ता को छूने (संभावित रूप से) को शामिल नहीं करेगा।
अधिक कठिन, लेकिन संभवतः बेहतर दृष्टिकोण यह है कि आप अपनी आवश्यकताओं के लिए अपनी निर्भरता को पास करें । हां, इसमें पासिंग ए शामिल हो सकती हैWindow *
ऐसी वस्तुओं का एक समूह (आपकी इकाई की तरह) जो सकल दिखती हैं। तथ्य यह है कि यह सकल दिखता है आपको कुछ बताना चाहिए: आपका डिज़ाइन सकल हो सकता है।
इसका कारण और अधिक कठिन है (अधिक टाइपिंग शामिल करने से परे) यह है कि यह अक्सर आपके इंटरफेस को रिफ्लेक्ट करने की ओर ले जाता है, ताकि पास करने के लिए आपको जिस चीज की "जरूरत" होती है वह कम पत्ती-स्तर की कक्षाओं द्वारा आवश्यक होती है। यह आपके रेंडर को हर चीज को पास करने में पारित होने में बहुत अधिक कुरूपता पैदा करता है, और यह निर्भरता और युग्मन की मात्रा को कम करके आपके कोड की सामान्य स्थिरता को भी बेहतर बनाता है, जिस पर निर्भरता को ले कर आपने बहुत हद तक स्पष्ट कर दिया है । जब निर्भरता एकल या ग्लोबल्स थे, तो यह कम स्पष्ट था कि आपके सिस्टम कैसे परस्पर जुड़े थे।
लेकिन यह संभावित रूप से एक प्रमुख उपक्रम है। तथ्य के बाद एक प्रणाली के लिए ऐसा करना सर्वथा दर्दनाक हो सकता है। यह आपके लिए कहीं अधिक व्यावहारिक हो सकता है कि आप अपने सिस्टम को केवल अकेले छोड़ दें, सिंगलटन के साथ, अभी के लिए (विशेषकर यदि आप वास्तव में एक गेम शिप करने की कोशिश कर रहे हैं जो अन्यथा ठीक काम करता है; खिलाड़ी आमतौर पर आपकी देखभाल करने वाले नहीं होते हैं; एक सिंगलटन या वहाँ चार)।
यदि आप अपने मौजूदा डिज़ाइन के साथ ऐसा करने का प्रयास करना चाहते हैं, तो आपको अपने वर्तमान कार्यान्वयन के बारे में और अधिक विवरण पोस्ट करने की आवश्यकता हो सकती है क्योंकि इन परिवर्तनों को करने के लिए वास्तव में एक सामान्य चेकलिस्ट नहीं है। या चैट में इस पर चर्चा करें ।
आपने जो पोस्ट किया है, मुझे लगता है कि "नो सिंगलटन" दिशा में एक बड़ा कदम यह होगा कि आपकी संस्थाओं को खिड़की या दृश्य तक पहुंच की आवश्यकता से बचना होगा। यह सुझाव देता है कि वे खुद को आकर्षित करते हैं, और आपको संस्थाओं को खुद को आकर्षित करने की आवश्यकता नहीं है । आप एक कार्यप्रणाली को अपना सकते हैं जहाँ संस्थाओं में सिर्फ वही जानकारी होती है जो अनुमति देती हैउन्हें कुछ बाहरी प्रणाली द्वारा तैयार किया जाना चाहिए (जिसमें खिड़की और दृश्य संदर्भ हैं)। इकाई केवल अपनी स्थिति को उजागर करती है, और इसे स्प्राइट का उपयोग करना चाहिए (या किसी प्रकार के संदर्भ को स्प्राइट कहा जाना चाहिए, यदि आप डुप्लिकेट इंस्टेंसेस से बचने के लिए रेंडरर में वास्तविक स्प्राइट को कैश करना चाहते हैं)। रेंडरर को केवल संस्थाओं की एक विशेष सूची तैयार करने के लिए कहा जाता है, जिसके माध्यम से वह लूप करता है, डेटा पढ़ता है, और draw
इकाई के लिए स्प्राइट के साथ कॉल करने के लिए आंतरिक रूप से आयोजित विंडो ऑब्जेक्ट का उपयोग करता है ।