ढीले युग्मन अनिवार्य रूप से मॉड्यूल के बीच अप्रत्यक्ष निर्भरता है कि वे कैसे विकसित हो सकते हैं।
आम तौर पर, जब एक कसकर युग्मित प्रणाली होती है तो विभिन्न मॉड्यूल / ऑब्जेक्ट में एक बहुत ही विशिष्ट व्यवहार होता है जो परिधीय वस्तुओं के व्यवहार को मानता है। ऐसी वस्तुओं को अन्य मॉड्यूल व्यवहारों से जोड़ा / युग्मित किया जाता है और उन्हें अलगाव या किसी अन्य संदर्भ में फिर से उपयोग नहीं किया जा सकता है।
हालांकि व्यक्तिगत कार्यक्षमता के लिए जिम्मेदार ऐसे मॉड्यूल स्वतंत्र रूप से विकसित नहीं हो सकते हैं या विकसित नहीं हो सकते हैं
एक उदाहरण:
मान लें कि आपके पास 3 ऑब्जेक्ट्स
Shape(एक मॉडल ऑब्जेक्ट) और Canvas(एक यूआई तत्व) है। अभी
मान लें कि एक विधि shape.draw(Canvas)कैनवस के विमान द्वारा आपूर्ति की गई विमान पर एक वस्तु खींचेगी।
अब, कभी-कभी खिड़कियों को आंशिक रूप से कवर किया जाता है और उनका आकार बदला जाता है। ऐसे मामलों में, उपरोक्त विधि ऐसा कुछ कर सकती है।
shape::draw(Canvas) {
Rect.WindowLeft = Canvas.GetWindowRect.getLeftOffset();
Rect.LeftPixel = Canvas.GetWindowRect.pixels() + Rect.WindowLeft;
.... // like this get all co-ordinates.
draw_instance(Rect); // This will draw the actual shape.
}
असल में, यहाँ ड्रा फंक्शन आयत को उठाता है जहाँ चीजों को खींचने की आवश्यकता होती है। यह समझना आसान है (लोग इसे सरल कह सकते हैं ) कोड। हालाँकि, यह बेहद युग्मित कोड है।
स्थिति की कल्पना करें:
- अगर खिड़कियों को रखने का कैनवास का तंत्र एक आयत नहीं है तो क्या होगा?
- क्या होगा यदि अतिरिक्त ऑफसेट हैं जो कैनवस रखता है जो निजी है ?
- क्या होगा अगर कुछ अन्य एप्लिकेशन समान आकार चाहते हैं, लेकिन अब कोई GUI विंडो नहीं है (उदाहरण के लिए, यह चित्र बना रहा है और फ़ाइलों में सहेज रहा है)।
समस्या का मूल कारण यह है कि वस्तु को shape जानता है और इसलिए कसकर युग्मित है Canvas।
यह क्या वांछनीय है कि एक पिक्सेल सेट को आकार दिया जाता है जहां वह लिखता है; shape(यहां तक कि छुपा हुआ) जहां पिक्सल वास्तव में लिखा जाता है के बारे में ज्ञान नहीं होना चाहिए।