मैंने ऐसा करने के कुछ तरीके देखे हैं।
सबसे आम तरीका निर्भरता इंजेक्शन का उपयोग उन वस्तुओं में संग्रहित करने के लिए निर्भर करता है जो उन्हें उपयोग करते हैं। आम तौर पर ये प्रस्तुतकर्ता या नियंत्रक वर्ग होते हैं लेकिन कुछ मामलों में मॉडल भंडार में कॉल करता है। आमतौर पर यह बेहतर होता है अगर आप इससे बचें। यदि आप ऐसा करने के लिए एक डी-कंटेनर का उपयोग कर सकते हैं तो इसके लिए जाएं।
आप रिपॉजिटरीज को सिंगलटन पैटर्न को भी लागू कर सकते हैं। मैं इससे बचने की कोशिश करता हूं क्योंकि सिंगलेट आमतौर पर स्थिर तरीकों का उपयोग करते हैं। यह उस कोड का परीक्षण कर सकता है जो सिंगलेट में अधिक कठिन कहता है। यदि आपको इस तरह से काम करना है तो सुनिश्चित करें कि आप सिंगलटन को कॉल करने वाले कोड को अलग करें और "मैनुअल" निर्भरता इंजेक्शन का उपयोग उन वर्गों में सिंगलेट को इंजेक्ट करने के लिए करें जो उन्हें कॉल करते हैं। यह कुछ तंग युग्मन से छुटकारा पाता है जिसे आप अन्यथा प्राप्त करेंगे।
मैंने कुछ उदाहरण देखे हैं जहां भंडार कभी नहीं बुलाए जाते हैं। जब कोई मॉडल में ऑब्जेक्ट ग्राफ़ को नेविगेट करता है और उस ऑब्जेक्ट का अनुरोध करता है जो मॉडल को लोड नहीं करता है तो बस एक ईवेंट उठाता है और रिपॉजिटरी इस घटना पर प्रतिक्रिया करता है। इस तरह भंडार में कोई कॉल नहीं है और यह मॉडल से पूरी तरह से decoupled है। मैंने इस वास्तुकला का उपयोग स्वयं नहीं किया है लेकिन यह बहुत साफ लगता है।
मुझे घटनाओं की अवधारणा के माध्यम से आलसी लोडिंग मिलती है जिसे आपने दिलचस्प बताया है, क्या आप मुझे किसी भी सामग्री या उदाहरणों के बारे में बता सकते हैं जिन्हें आप जानते हैं कि उस रणनीति का उपयोग हो सकता है? मैं इसे अपने स्वयं के उपयोग के लिए मूल्यांकन करना चाहता हूं। – jpierson
@jpierson मैंने खोज की लेकिन कोई उदाहरण नहीं मिला। मुझे याद है कि डीडीडी पर एक वार्ता में घटना दृष्टिकोण का प्रदर्शन करने वाला कोई व्यक्ति है लेकिन ईमानदार होने के लिए यह सब सुंदर सैद्धांतिक था। – Mendelt