टेस्टेबिलिटी के अलावा, डीआई का उपयोग करने का बड़ा फायदा क्या है। (और मैं स्थिर वर्गों पर डीआईआई फ्रेमवर्क या आईओसी के बारे में बात नहीं कर रहा हूं)? विशेष रूप से एक ऐसे एप्लिकेशन के लिए जहां आप एक सेवा जानते हैं उसे बाहर नहीं किया जाएगा।परीक्षण के अलावा, निर्भर वर्ग इंजेक्शन स्थिर वर्गों/तरीकों से बेहतर कैसे है?
हमारे सी # एप्लिकेशन में से एक में, हमारी टीम वेब वेब जीयूआई, सेवा परत, और स्थिर तरीकों का उपयोग करने के बजाय रिपोजिटरी परत में निर्भरता इंजेक्शन का उपयोग कर रही है। अतीत में, हमारे पास पीओसीओ (बिजनेस इकाई ऑब्जेक्ट्स) होते थे जिन्हें स्थिर वर्गों द्वारा बनाया, संशोधित, पारित किया गया और बचाया गया था।
उदाहरण के लिए, अतीत में हमने लिखा हो सकता है:
CreditEntity creditObj = CreditEntityManager.GetCredit(customerId);
Decimal creditScore = CreditEntityManager.CalculateScore(creditObj);
return creditScore;
अब, डि साथ, एक ही कोड होगा:
//not shown, _creditService instantiation/injection in c-tors
CreditEntity creditObj = _creditService.GetCredit(customerId);
Decimal creditScore = _creditService.CalculateScore(creditObj);
return creditScore;
बहुत अलग नहीं है, लेकिन अब हम के दर्जनों है सेवा वर्ग जिनके पास बहुत व्यापक दायरा है, जिसका अर्थ है कि हमें उनका इलाज करना चाहिए जैसे कि वे स्थैतिक थे (यानी कोई निजी सदस्य चर नहीं है जब तक कि वे आगे निर्भरताओं को परिभाषित करने के लिए उपयोग नहीं किए जाते)। इसके अलावा, यदि इनमें से कोई भी तरीका किसी संसाधन (डेटाबेस/वेब सेवा/आदि) का उपयोग करता है तो हमें समेकन संबंधी मुद्दों का प्रबंधन करना मुश्किल लगता है जब तक कि हम निर्भरता को हटा दें और पुरानी स्थिर या using(...)
विधियों का उपयोग न करें।
"टेस्टेबिलिटी के अलावा, डीआई का उपयोग करने का बड़ा फायदा क्या है" यह कहने की तरह है "मेरे सिर पर छत रखने के अलावा, मुझे नौकरी रखने में बड़ा फायदा क्या है"। – TrueWill