परिभाषाएं
नियंत्रण के व्युत्क्रम एक डिजाइन प्रतिमान है, जिसमें एप्लिकेशन फ्रेमवर्क कोड से ठोस कार्यान्वयन के बारे में जागरूकता कम करने और आपके एप्लिकेशन के डोमेन विशिष्ट घटकों को अधिक नियंत्रण देने का लक्ष्य है। एक पारंपरिक टॉप डाउन डिज़ाइन सिस्टम में, एप्लिकेशन का तार्किक प्रवाह और निर्भरता जागरूकता शीर्ष घटकों से प्रवाहित होती है, जिन्हें पहले डिज़ाइन किया गया था, अंतिम डिज़ाइन किए गए। जैसे, नियंत्रण का उलटा एक आवेदन में नियंत्रण और निर्भरता जागरूकता का लगभग शाब्दिक उलट है।
निर्भरता इंजेक्शन वर्गों के उदाहरणों को बनाने के लिए उपयोग किया जाने वाला एक पैटर्न है जिसे अन्य कक्षाएं संकलन समय पर जाने बिना भरोसा करती हैं कि कार्यान्वयन का उपयोग उस कार्यक्षमता को प्रदान करने के लिए किया जाएगा।
साथ में काम कर रहे
नियंत्रण का उलटा निर्भरता इंजेक्शन का उपयोग कर सकता है क्योंकि विशिष्ट कार्यक्षमता प्रदान करने वाले घटकों को बनाने के लिए एक तंत्र की आवश्यकता होती है। अन्य विकल्प मौजूद हैं और उनका उपयोग किया जाता है, जैसे कि एक्टिविटर्स, फैक्ट्री मेथड्स आदि, लेकिन फ्रेमवर्क को उन यूटिलिटी क्लासेस को रेफर करने की जरूरत नहीं होती है, जब फ्रेमवर्क क्लासेस डिपेंडेंसी (ies) को स्वीकार कर सकते हैं, जिनकी उन्हें जरूरत होती है।
उदाहरण
काम पर इन अवधारणाओं का एक उदाहरण रिफ्लेक्टर में प्लग-इन फ्रेमवर्क है । प्लग-इन के पास सिस्टम के नियंत्रण का एक बड़ा सौदा है, भले ही एप्लिकेशन को संकलन समय पर प्लग-इन के बारे में कुछ भी पता नहीं था। प्रत्येक प्लग-इन पर एक एकल विधि कहा जाता है, यदि स्मृति कार्य करती है, तो प्रारंभ करें, जो प्लग-इन पर नियंत्रण से गुजरता है। ढांचा यह नहीं जानता कि वे क्या करेंगे, यह सिर्फ उन्हें ऐसा करने देता है। नियंत्रण मुख्य आवेदन से लिया गया है और विशिष्ट कार्य करने वाले घटक को दिया गया है; नियंत्रण का उलटा।
एप्लिकेशन फ्रेमवर्क विभिन्न प्रकार के सेवा प्रदाताओं के माध्यम से इसकी कार्यक्षमता तक पहुंचने की अनुमति देता है। एक प्लग-इन सेवा प्रदाताओं के संदर्भ में दिया जाता है जब इसे बनाया जाता है। ये निर्भरता प्लग-इन को अपने मेनू आइटम को जोड़ने की अनुमति देती है, फ़ाइलों को कैसे प्रदर्शित किया जाता है, इसकी जानकारी को उपयुक्त पैनलों में प्रदर्शित करें, आदि। चूंकि निर्भरता इंटरफ़ेस द्वारा पारित की जाती है, इसलिए कार्यान्वयन बदल सकते हैं और परिवर्तन नहीं टूटेंगे। जब तक अनुबंध बरकरार रहता है तब तक कोड।
उस समय, कॉन्फ़िगरेशन जानकारी, प्रतिबिंब और एक्टिवेटर ऑब्जेक्ट (.NET में कम से कम) का उपयोग करके प्लग-इन बनाने के लिए एक फैक्ट्री विधि का उपयोग किया जाता था। आज, एक के लिए उपकरण, एमईएफ हैं , जो एक निर्भरता के रूप में प्लगइन्स की सूची को स्वीकार करने के लिए एक आवेदन ढांचे के लिए क्षमता सहित इंजेक्शनों की एक विस्तृत श्रृंखला के लिए अनुमति देते हैं।
सारांश
हालांकि इन अवधारणाओं का उपयोग किया जा सकता है और वे स्वतंत्र रूप से लाभ प्रदान कर सकते हैं, साथ में वे बहुत अधिक लचीले, पुन: प्रयोज्य और परीक्षण योग्य कोड लिखने की अनुमति देते हैं। जैसे, वे वस्तु उन्मुख समाधान डिजाइन करने में महत्वपूर्ण अवधारणाएं हैं।