मैं डिपेंडेंसी इंजेक्शन और IoC कंटेनरों पर बात करने की योजना बना रहा हूं, और मैं इसका उपयोग करने के लिए कुछ अच्छे तर्क तलाश रहा हूं।
इस तकनीक और इन उपकरणों का उपयोग करने के सबसे महत्वपूर्ण लाभ क्या हैं?
मैं डिपेंडेंसी इंजेक्शन और IoC कंटेनरों पर बात करने की योजना बना रहा हूं, और मैं इसका उपयोग करने के लिए कुछ अच्छे तर्क तलाश रहा हूं।
इस तकनीक और इन उपकरणों का उपयोग करने के सबसे महत्वपूर्ण लाभ क्या हैं?
जवाबों:
मेरे लिए सबसे महत्वपूर्ण, एकल जिम्मेदारी सिद्धांत का पालन करना आसान बना रहा है ।
DI / IoC वस्तुओं के बीच निर्भरता का प्रबंधन करना मेरे लिए सरल बनाता है। बदले में, यह मेरे लिए अपने स्वयं के अनुबंध (इंटरफ़ेस) में सुसंगत कार्यक्षमता को तोड़ना आसान बनाता है। परिणामस्वरूप, जब से मुझे DI / IoC का पता चला, मेरे कोड को बहुत अधिक संशोधित किया गया है।
इसका एक और परिणाम यह है कि मैं बहुत आसानी से ओपन-क्लोज्ड सिद्धांत का समर्थन करने वाले डिजाइन के माध्यम से अपना रास्ता देख सकता हूं । यह सबसे अधिक आत्मविश्वास प्रेरक तकनीकों में से एक है (केवल स्वचालित परीक्षण के लिए दूसरा)। मुझे संदेह है कि मैं ओपन-क्लोज्ड प्रिंसिपल के गुणों को पर्याप्त रूप से जान सकता हूं।
DI / IoC मेरे प्रोग्रामिंग करियर की कुछ चीजों में से एक है जो "गेम चेंजर" रही है। वहाँ एक है विशाल गुणवत्ता में अंतर कोड के बीच मैंने पहले और डि / आईओसी सीखने के बाद लिखा था। मुझे इस बात पर जोर देना चाहिए कि कुछ और। कोड की गुणवत्ता में बड़ा सुधार।
उदाहरण जो वास्तव में मेरी आँखें खोलते थे, देख रहे थे कि कैसे इस तरह से आसानी से इस तरह से बनाई गई वस्तुओं का परीक्षण करना संभव हो गया। इससे पहले, मुझे यूनिट परीक्षण के लिए वस्तुओं को अलग करने का प्रयास करने में परेशानी हुई थी। मैं अक्सर एक बहुत बड़ी प्रणाली के साथ बातचीत करने के लिए परीक्षण लिखूंगा। यह वास्तव में कठिन था क्योंकि एक पूरे के रूप में प्रणाली बहुत कम अनुमानित थी और फिर व्यक्तिगत घटकों को बदलने के लिए बहुत अधिक प्रवण।
निर्भरता इंजेक्शन के लाभ हैं:
मुझे लगता है कि तकनीकी की तुलना में वास्तविक लाभ अधिक राजनीतिक हैं। DI बस सेवा लोकेटर पैटर्न का एक विकल्प है , इससे ज्यादा कुछ नहीं। अपने आप से, एसआरपी या ओसीपी जैसे सिद्धांतों का पालन करना आसान नहीं है, या परतों को कम करना है। यहां अन्य उत्तरदाता विभिन्न अवधारणाओं और तकनीकों, आईएमओ को भ्रमित कर रहे हैं।
आप सेवा लोकेटरों का उपयोग करके या जब भी लागू हो (जो कि ज्यादातर समय होता है) पर सीधे निर्भरता द्वारा उच्च सामंजस्य और कम युग्मन के संबंध में समान लक्ष्य प्राप्त कर सकते हैं।
अब, मुझे पता है कि कई लोग इस राय से असहमत होंगे। मुझे ठोस उदाहरणों पर चर्चा करने में खुशी होगी।
जब परीक्षण के उद्देश्य के लिए आंतरिक वस्तुओं को उजागर करने के लिए DI का उपयोग किया जाता है, तो पैटर्न का दुरुपयोग किया गया है।