निर्भरता रेसोलवर के साथ आपका उदाहरण आपके मूल कोड से कहीं बेहतर नहीं है, इसलिए हाँ .. ऐसा करने का कोई फायदा नहीं है।
शुक्र है, यह वही तरीका नहीं है जिसे आप करना चाहते हैं। इसके बजाय, आप कन्स्ट्रक्टर या प्रॉपर्टी इंजेक्शन का उपयोग करते हैं।
मैं @adriaanp से सहमत हूं, आसान इकाई परीक्षण केवल निर्भरता इंजेक्शन का एक पक्ष लाभ है। सबसे बड़ा लाभ यह है कि यह निर्भरता मुक्त वास्तुकला को प्रोत्साहित करता है। आपकी कक्षाएं अकेले खड़े हैं, और एक विशिष्ट कार्यान्वयन (इसके इंटरफ़ेस और आवश्यकताओं के अलावा) पर निर्भर नहीं हैं
एक और लाभ यह है कि एक आईओसी कंटेनर आपकी निर्भरताओं के जीवनकाल को नियंत्रित कर सकता है। मान लीजिए कि आप वेब पेज में अनुरोध के जीवनकाल के लिए एक वस्तु मौजूद होना चाहते हैं। यह भी मान लें कि आप इस ऑब्जेक्ट को कई अलग-अलग वर्गों में एक्सेस करना चाहते हैं। आप ऑब्जेक्ट को अपने पेज लोड इवेंट में बना सकते हैं, फिर इसे अपने द्वारा बनाए गए हर ऑब्जेक्ट पर पास कर दें। हालांकि, इसका मतलब यह हो सकता है कि आपको उन ऑब्जेक्ट्स को पास करने की आवश्यकता है जो वास्तव में इसका उपयोग नहीं करते हैं, क्योंकि वे ऑब्जेक्ट्स बनाते हैं जिन्हें इसकी आवश्यकता होती है (या वे ऑब्जेक्ट्स बनाते हैं जो ऑब्जेक्ट्स की आवश्यकता होती है, या .. और इसी तरह)।
निर्भरता इंजेक्शन और आईओसी कंटेनर के साथ, कंटेनर ऑब्जेक्ट के जीवनकाल को नियंत्रित करता है, और यह उन वस्तुओं में इंजेक्शन देने से संबंधित है जिनकी आवश्यकता है। आपको इसे अपने डिजाइन में बनाना नहीं है। आप इसे मुफ्त में प्राप्त करें।
और अंत में, परीक्षण समस्या के लिए।जब आप कुछ परीक्षण करते हैं, यदि इसमें हार्ड कोड कोड है, तो आप टेस्ट डेटा को खिलाने के लिए आसानी से इसे मॉक ऑब्जेक्ट से प्रतिस्थापित नहीं कर सकते हैं। मान लीजिए कि आप यह जांचना चाहते हैं कि कोई ऑब्जेक्ट सही मान की गणना करता है। ज्ञात मूल्यों के साथ परीक्षण डेटा को खिलााना इसे परीक्षण करना आसान बनाता है।
स्रोत
2011-11-14 06:54:27