'युग्मन' एक शब्द है जो एक सॉफ्टवेयर सिस्टम (आमतौर पर कक्षाएं) में दो संस्थाओं के बीच संबंध का वर्णन करता है।
जब एक वर्ग किसी अन्य वर्ग का उपयोग करता है, या उसके साथ संचार करता है, तो उसे उस अन्य वर्ग पर 'निर्भर' करने के लिए कहा जाता है, और इसलिए ये वर्ग 'युग्म' होते हैं। कम से कम उनमें से एक दूसरे के बारे में 'जानता' है।
विचार यह है कि हमें अपने सिस्टम में वर्गों के बीच युग्मन को 'ढीले' के रूप में संभव रखने की कोशिश करनी चाहिए: इसलिए 'ढीली युग्मन' या कभी-कभी 'डिकूप्लिंग' (हालांकि अंग्रेजी में 'डिकॉउलिंग' का मतलब होगा 'युग्मन बिल्कुल नहीं', लोग) अक्सर इसका इस्तेमाल संस्थाओं के बीच 'ढीले युग्मन' को करने के लिए किया जाता है)।
तो: अभ्यास में मजबूत युग्मन बनाम ढीले-युग्मन क्या है, और हमें संस्थाओं को शिथिल-युग्मित क्यों करना चाहिए?
युग्मन एक इकाई से दूसरी इकाई के बीच निर्भरता की डिग्री का वर्णन करता है। अक्सर कक्षाओं या वस्तुओं।
जब ClassA ClassB पर बहुत अधिक निर्भर करता है, तो ClassB के बदल जाने पर ClassA के प्रभावित होने की संभावना बढ़ जाती है। यह मजबूत युग्मन है।
हालाँकि यदि ClassA, ClassB के कोड में बदलाव से किसी भी तरह से प्रभावित होने की संभावना से कम ClassB, ClassB पर निर्भर करता है, तो निम्न हैं। यह ढीला युग्मन, या एक 'डिकूफ़्ड' संबंध है।
ढीली युग्मन अच्छा है क्योंकि हम नहीं चाहते कि हमारे सिस्टम के घटक एक-दूसरे पर बहुत अधिक निर्भर हों। हम अपने सिस्टम को मॉड्यूलर रखना चाहते हैं, जहां हम दूसरे को प्रभावित किए बिना एक हिस्से को सुरक्षित रूप से बदल सकते हैं।
जब दो भाग शिथिल हो जाते हैं, तो वे एक-दूसरे से अधिक स्वतंत्र होते हैं और जब अन्य परिवर्तन होते हैं तो वे टूटने की संभावना कम होती है।
उदाहरण के लिए, कार बनाते समय, आप स्टीयरिंग व्हील में किसी चीज को तोड़ने के लिए इंजन में आंतरिक बदलाव नहीं चाहेंगे।
जबकि कार बनाते समय दुर्घटना से ऐसा कभी नहीं होगा, इसी तरह की बातें हर समय प्रोग्रामर को होती हैं। ढीली कपलिंग का मतलब ऐसी चीजों के जोखिम को कम करना है।
जब इकाई एक इकाई बी के बारे में बहुत ज्यादा जानता है मजबूत युग्मन आमतौर पर तब आती इकाई एक कैसे इकाई बी संचालित या यह कैसे बनाया गया है, की तुलना में वहाँ एक उच्च जोखिम है कि इकाई बी में बदलाव इकाई ए को प्रभावित करेगा है के बारे में भी कई धारणाएं बनाता है तो यह ऐसा इसलिए है क्योंकि इकाई B के बारे में इसकी एक धारणा अब गलत है।
उदाहरण के लिए, कल्पना कीजिए कि एक ड्राइवर के रूप में, आप इस बारे में कुछ धारणाएँ बनाएंगे कि आपकी कार का इंजन कैसे काम करता है।
जिस दिन आप एक ऐसी इंजन वाली नई कार खरीदते हैं जो अलग तरीके से काम करती है (या किसी कारण से आपके इंजन को बदल दिया गया था), आपकी पिछली धारणाएँ गलत होंगी। यदि आप एक कंप्यूटर में कोड थे, तो अब आप गलत कोड होंगे जो ठीक से काम नहीं करता है।
हालांकि, अगर सभी धारणाएं कि एक ड्राइवर के रूप में जो आपने कारों के बारे में बनाया है, वह यह है: A- उनके पास स्टीयरिंग व्हील्स हैं और B- उनके पास ब्रेक और गैस पैडल हैं, तो कार में बदलाव से आप पर कोई असर नहीं पड़ेगा, जब तक कि आपकी कुछ धारणाएं। सही रहो। यह ढीली कपलिंग है।
ढीली युग्मन प्राप्त करने के लिए एक महत्वपूर्ण तकनीक एनकैप्सुलेशन है। विचार यह है कि एक वर्ग इसे अन्य वर्गों से आंतरिक विवरण छुपाता है, और अन्य वर्गों को इसके साथ संवाद करने के लिए कड़ाई से परिभाषित इंटरफ़ेस प्रदान करता है।
उदाहरण के लिए, यदि आप एक वर्ग कार को परिभाषित किया गया है, यह के इंटरफेस (सार्वजनिक विधि) शायद होगा drive()
, stop()
, steerLeft()
, steerRight()
, getSpeed()
। ये वे तरीके हैं जो अन्य ऑब्जेक्ट कार ऑब्जेक्ट पर लागू कर सकते हैं।
कार वर्ग के अन्य सभी विवरण: इंजन कैसे काम करता है, किस तरह का ईंधन उपयोग करता है, आदि अन्य वर्गों से छिपे हुए हैं - उन्हें कार के बारे में बहुत अधिक जानने से रोकने के लिए।
पल क्लास ए क्लास बी के बारे में बहुत अधिक जानता है: हमारे बीच एक मजबूत कपल रिलेशनशिप है, जहां क्लास ए क्लास बी पर बहुत ज्यादा निर्भर है और क्लास बी में बदलाव से क्लास ए पर असर पड़ने की संभावना है ।
दो संस्थाओं के बीच एक संबंध, जहां वे एक-दूसरे के बारे में बहुत कम जानते हैं (केवल क्या आवश्यक है) - एक शिथिल युग्मित, या विच्छेदित संबंध है।