मैंने आईओसी और DI और कई स्पष्टीकरणों ने एक दूसरे के साथ विरोधाभास के बीच अंतर को समझाते हुए कई धागे पढ़े हैं, मुझे लगता है कि उन्होंने अभी भी अंतर को समझने में मेरी सहायता की है।चयनित उद्धरणों के साथ नियंत्रण बनाम निर्भरता इंजेक्शन का उलटा - क्या मेरी समझ सही है?
तो यहां मैं यह पूछना चाहता हूं कि मेरी समझ सही है या उन अंशों को भी पोस्ट करें जो मेरी मदद करते हैं (हालांकि उनमें से कुछ एक-दूसरे से विरोधाभास करते हैं)।
मुझे पता है कि इस विषय पर बहुत से धागे किए गए हैं, लेकिन मुझे उम्मीद है कि यह धागा बंद नहीं होगा क्योंकि मुझे नहीं लगता कि उल्लिखित धागे में से किसी भी ओपी ने सभी प्रासंगिक पदों को दिखाया है (विभिन्न से धागे) जिसने उन्हें अंत में समझने में मदद की।
फिर भी, यहाँ मैं इसे कैसे समझ में (यदि संभव हो, का समाधान करें/प्रत्येक प्रश्न के अलग-अलग जवाब देने के) है:
क) जब हम ढांचा स्तर पर DIP सिद्धांत लागू होते हैं, तो हम शब्द का प्रयोग आईओसी? और डीआईपी पर लागू करने के लिए तंत्र में से एक फ्रेमवर्क स्तरDI है?
ख) अवधि आईओसी लागू नहीं होता है जब हम DIP (एक निचले स्तर/गैर ढांचा स्तर पर डि) का उपयोग कर, जिस स्थिति में हम बस इसे कहते डि लागू?
ग) डि हमें एक 3 पार्टी जो तटस्थ है अन्य 2 के दोनों शामिल करने के लिए की वास्तविक निर्माण और निर्भरता के चयन के नियंत्रण पारित करके DIP हासिल करने के लिए मदद करता है?
घ) जब DIP लागू किया जाता है (ढांचा स्तर (आईओसी) में डि) का उपयोग करें, तो नियंत्रण के तीन प्रकार उल्टे हो:
इंटरफ़ेस का नियंत्रण। अब उच्च स्तर मॉड्यूल इंटरफ़ेस है कि निचले स्तर मॉड्यूल प्रवाह के नियंत्रण के आसपास
बजाय दूसरी तरह की का पालन करने की जरूरत है नियंत्रित कर रहा है। -> अब ढांचे कोड (बजाय उपयोगकर्ता/व्यापार कोड का) कार्यक्रम के प्रवाह (दूसरे शब्दों में - वे (यानी ढांचा) आप कॉल (यानी व्यापार कोड)) को नियंत्रित करता
निर्भरता निर्माण का नियंत्रण। यह उलटा वास्तविक निर्माण और निर्भरता के चयन को तीसरे पक्ष को नियंत्रित कर रहा है जो कि अन्य 2 में से किसी एक के लिए तटस्थ है।
ङ) जब DIP लागू किया जाता है (गैर ढांचा स्तर पर डि) का उपयोग करें, तो नियंत्रण के दो प्रकार उल्टे हो:
इंटरफ़ेस का नियंत्रण । अब उच्च स्तर मॉड्यूल इंटरफ़ेस है कि निचले स्तर मॉड्यूल निर्भरता निर्माण के नियंत्रण के आसपास
बजाय दूसरी तरह की का पालन करने की जरूरत है नियंत्रित कर रहा है। यह उलटा वास्तविक निर्माण और निर्भरता के चयन को तीसरे पक्ष को नियंत्रित कर रहा है जो कि अन्य 2 में से किसी एक के लिए तटस्थ है।
?
कंट्रोलWhy so many terms to say the same thing? IoC and DIP
उलट सामान्य शब्द है:
यहाँ अंश कि मदद कर रहे हैं। निर्भरता इंजेक्शन आईओसी
के विशिष्ट प्रकार...
जब ढांचा/बुनियादी ढांचे आवेदन कोड का आह्वान, बल्कि दूसरी तरह के आसपाससे नियंत्रण
उलट है ... है
आईओसी किए बिना DI कर सकता है। यदि आप हैलोवर्ल्ड में एक कंसोलस्ट्रिंगवाइटर इंजेक्ट करते हैं तो मैं वास्तव में आईओसी के रूप में इस बारे में नहीं सोचता क्योंकि "ढांचा" या "आधारभूत संरचना" नहीं है।
Inversion of Control < Dependency Injection
आप फाउलर की परिभाषा स्वीकार करते हैं, नियंत्रण के उलट डि की तुलना में काफी व्यापक शब्द है कि allframework उपयोग जहाँ आप एक ढांचे में प्लग को शामिल किया गया है, लेकिन ढांचा अभी भी नियंत्रण में है। निर्भरता इंजेक्शन आईओसी का एक विशेषज्ञता है जो आईओसी विशेष रूप से निर्भरताओं का प्रबंधन करता है।
Where exactly is the difference between IoC and DI
आईओसी एक अनुबंध के कार्यान्वयन भिन्न करने की क्षमता है। डी कार्यान्वयन की आपूर्ति करने की क्षमता है।
...
पारंपरिक अनुप्रयोगों में, डेवलपर्स व्यापार कोड और ढांचे कोड लिखेंगे। व्यवसाय कोड तब कार्यों को पूरा करने के लिए फ्रेमवर्क कोड पर कॉल करेगा।एक आईओसी मॉडल के तहत, आप उस मॉडल "को उलटने के" और एक रूपरेखा है कि व्यापार मॉड्यूल स्वीकार करता है और उन्हें कॉल पूरा करने के लिए कार्य
निर्भरता इंजेक्शन एक तकनीक है बनाने के आंतरिक को दूर करने के (हार्ड यह एक पैटर्न, वास्तव में कॉल करने के लिए) द्वारा कार्यान्वयन से निर्भरता निर्भर करता है कि आश्रित वस्तुओं को कक्षा/विधि में बाहरी कॉलर द्वारा इंजेक्शन दिया जा सके। आईओसी ढांचे उपयोगकर्ता मॉड्यूल और फ्रेमवर्क रूटीन के लिए अन्य आश्रित कोड की आपूर्ति करने के लिए निर्भरता इंजेक्शन का उपयोग करते हैं जो "गोंद यह सब एक साथ है।" निर्भरता इंजेक्शन का उपयोग आईओसी ढांचे द्वारा भारी रूप से किया जाता है क्योंकि यह वह तंत्र है जो उन्हें " पर कॉल करने की अनुमति देता है।"
DIP सिद्धांत डि ओर हमें गाइड है। असल में, ढीला युग्मन लक्ष्य है, और इसे प्राप्त करने के कम से कम दो तरीके हैं। • निर्भरता इंजेक्शन • सेवा लोकेटर
Does anyone have a good analogy for dependency injection?
नियंत्रण के उलट (जिनमें से निर्भरता इंजेक्शन एक कार्यान्वयन है) का सार प्रबंधन तत्संबंधी से एक वस्तु का उपयोग की जुदाई है ।
Difference between ioc and dependency injection
शर्तों निर्भरता इंजेक्शन (डीआई) & नियंत्रण के उलट (आईओसी) आम तौर पर दूसरे के स्थान पर उपयोग किया जाता है, हालांकि हर कोई उस बिंदु पर सहमत हैं एक ही डिजाइन पैटर्न (वर्णन करने के लिए, और कुछ लोग पर थोड़ा अलग तरीके से लागू होते हैं)। पैटर्न मूल रूप से था जिसे आईओसी कहा जाता था, लेकिन मार्टिन फाउलर ने डीआई में बदलाव का प्रस्ताव दिया क्योंकि सभी फ्रेमवर्क इनवर्टर कंट्रोल को किसी भी तरह से नियंत्रित करते हैं और वह अधिक बनना चाहते थे, जिसके बारे में नियंत्रण के किस पहलू को उलटा किया जा रहा था।
Inversion of Control vs Dependency Injection
नियंत्रण (आईओसी) के उलट मतलब यह है कि वस्तुओं अन्य वस्तुओं जिस पर उन्होंने अपना काम करने के लिए भरोसा नहीं बनाते हैं। इसके बजाय, उन्हें ऑब्जेक्ट्स मिलते हैं जिन्हें उन्हें बाहरी स्रोत से (उदाहरण के लिए, एक XML कॉन्फ़िगरेशन फ़ाइल) की आवश्यकता होती है। निर्भरता इंजेक्शन (डीआई) का मतलब है कि यह ऑब्जेक्ट हस्तक्षेप के बिना किया जाता है, आमतौर पर एक फ्रेमवर्क घटक द्वारा कन्स्ट्रक्टर पैरामीटर पास करता है और गुण सेट करता है।
धन्यवाद
ध्यान दें कि SO एक मंच नहीं है, इसलिए इसमें "धागे" नहीं हैं। यह एक प्रश्नोत्तर साइट है, इसलिए इसमें प्रश्न और उत्तर हैं। यह मामूली भेद नहीं है, क्योंकि प्रारूपों में अंतर के कई परिणाम हैं। इसके अलावा, [प्रोग्रामर.एसई] (http://programmers.stackexchange.com/) वैचारिक और डिजाइन सवालों के लिए एक बेहतर फिट है। एसओ कार्यान्वयन के मुद्दों के लिए है। – outis
[यह पुस्तक] (http://manning.com/seemann/) आपको सभी जवाब देगा। – Steven