यहाँ जवाबों के बीच अंतर की डिग्री से पता चलता है कि इसे समझ पाना एक कठिन अवधारणा क्यों होगी लेकिन इसे केवल उसी तरह से रखा जा सकता है जैसे मैं इसका वर्णन कर सकता हूं:
मेरे लिए यह जानने के लिए कि अगर मैं आपके लिए एक गेंद फेंकता हूं, तो आप इसे पकड़ सकते हैं मुझे यह जानने की जरूरत नहीं है कि आप कितने साल के हैं। मुझे यह जानने की आवश्यकता नहीं है कि आपने नाश्ते के लिए क्या खाया, और मुझे वास्तव में परवाह नहीं है कि आपका पहला क्रश कौन था। मुझे बस यह जानना चाहिए कि आप पकड़ सकते हैं। अगर मुझे यह पता है, तो मुझे परवाह नहीं है अगर आप मुझे या आपके भाई को गेंद फेंक रहे हैं।
ग # या जावा आदि जैसी गैर-गतिशील भाषाओं के साथ, हम इसे इंटरफेस के माध्यम से पूरा करते हैं। तो हम कहते हैं कि हम निम्नलिखित इंटरफ़ेस है:
public ICatcher
{
public void Catch();
}
और अब हम कहते हैं कि हमारे पास निम्न वर्ग हैं:
public CatcherA : ICatcher
{
public void Catch()
{
console.writeline("You Caught it");
}
}
public CatcherB : ICatcher
{
public void Catch()
{
console.writeline("Your brother Caught it");
}
}
अब कैचर और कैचरबी दोनों कैच विधि को लागू करते हैं, इसलिए कैचर को जिस सेवा की आवश्यकता होती है, वह इनमें से किसी एक का उपयोग कर सकता है और वास्तव में एक लानत नहीं देता है कि यह कौन सा है। तो एक कसकर युग्मित सेवा सीधे एक कैच यानी को भड़का सकती है
public CatchService
{
private CatcherA catcher = new CatcherA();
public void CatchService()
{
catcher.Catch();
}
}
तो कैचसेवर वास्तव में वही कर सकता है जो उसने करने के लिए निर्धारित किया है, लेकिन यह कैचर का उपयोग करता है और हमेशा कैचर को उपयोगकर्ता करेगा। इसकी हार्ड कोडिंग की गई है, इसलिए जब तक कोई इसके साथ नहीं आता है, तब तक वहां रहता है और इसे रिफ्लेक्ट करता है।
अब एक और विकल्प लेते हैं, जिसे निर्भरता इंजेक्शन कहा जाता है:
public CatchService
{
private ICatcher catcher;
public void CatchService(ICatcher catcher)
{
this.catcher = catcher;
catcher.Catch();
}
}
तो कैल्स जो कि कैचअप सेवा को बढ़ावा देता है, वह निम्न कार्य कर सकता है:
CatchService catchService = new CatchService(new CatcherA());
या
CatchService catchService = new CatchService(new CatcherB());
इसका मतलब यह है कि कैच सर्विस को कैचर या कैचरबी दोनों में से किसी को भी कसकर नहीं जोड़ा जाता है।
इस तरह की शिथिल युग्मन सेवाओं के लिए कई अन्य स्ट्रैटिजी हैं जैसे कि एक IoC ढांचे का उपयोग आदि।