मैं निर्भरता इंजेक्शन का उपयोग करने के लिए एक मौजूदा प्रणाली को फिर से तैयार कर रहा हूं, और यह काम आसानी से चल रहा है।
थोड़ी देर के बाद मैंने देखा कि बड़ी संख्या में इन-हाउस लाइब्रेरी मेरे द्वारा उपयोग किए गए DI फ्रेमवर्क पर निर्भर हो गईं। परिणामस्वरूप पूरी परियोजना अब इस तीसरे पक्ष के ढांचे पर निर्भर करती है।
मैंने सभी आश्रितों को एक साझा पुस्तकालय पर आश्रित बनाकर उन्हें अलग करने में एक विडंबना देखी।
मेरी पहली प्रतिक्रिया निर्भरता ढांचे के आसपास एक आवरण पुस्तकालय बनाने के लिए थी। इसलिए, मैं जरूरत पड़ने पर इस ढांचे को बदल सकता हूं। इसमें शामिल काम का आकलन करने के बाद, मुझे एहसास हुआ कि परिणामस्वरूप एपीआई मौजूदा ढांचे के समान होगा, और इसलिए इसे बदलना अधिक कठिन है। इसलिए मैंने विचार त्याग दिया।
मेरी चिंता यह है कि मैं जिस डीआई फ्रेमवर्क का उपयोग कर रहा हूं वह अप्रचलित हो गया है या उसे बदलने की आवश्यकता है।
क्या DI के साथ काम करते समय एक विकास पैटर्न मौजूद है जो किसी प्रोजेक्ट और DI फ्रेमवर्क के बीच युग्मन को कम करता है?
DIFramework.Get<IService>()
वास्तव में निर्भरता इंजेक्शन नहीं है; यह एक संबंधित पैटर्न है जिसे सर्विस लोकेटर कहा जाता है। बहुत से लोग सेवा लोकेटर को नापसंद करते हैं क्योंकि यह आपको फ्रेमवर्क से जोड़े रखता है और क्योंकि यह बहुत आसानी से दुरुपयोग होता है (जैसे सिंगलटन)। मार्टिन फाउलर का इन पैटर्नों के बारे में एक शानदार लेख है: martinfowler.com/articles/injection.html