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