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