"वास्तविक दुनिया" में ढीले / तंग युग्मन को समझना


9

मैं नहीं कहता कि "समुदाय" क्या है क्योंकि मैं एक गैर-पक्षपाती स्पष्टीकरण चाहता हूं, लेकिन मान लीजिए कि आप एक पुन: प्रयोज्य मॉड्यूल का निर्माण कर रहे हैं और उस मॉड्यूल को 3+ निर्भर मॉड्यूल की आवश्यकता होती है और उनमें से 1 को हटाने से आपके ऐप में न केवल एक ब्रेकिंग त्रुटि होती है पूरे जो इस मॉड्यूल का उपयोग करता है, लेकिन मॉड्यूल ही।

मेरी समझ से (जो गलत होना चाहिए) एक शिथिल युग्मित मॉड्यूलर प्रणाली केवल एक मॉड्यूल को हटाने से नहीं टूटेगी। एप्लिकेशन को अभी भी चलना चाहिए लेकिन उस "फ़ीचर" / मॉड्यूल के बिना और मॉड्यूल को सब कुछ केवल इसलिए नहीं चलाना चाहिए क्योंकि एक निर्भर मॉड्यूल मौजूद नहीं है।

क्या यह गलत है? यदि हां, तो क्या मॉड्यूल अभी भी सब कुछ के बिंदु पर निर्भर है जो काम नहीं कर रहा है तंग / ढीली युग्मन के बीच अंतर क्या है?


2
यह कुछ हद तक बहस करने जैसा है कि आप एक कार से टायर निकाल सकते हैं और यह अभी भी ठीक काम करेगा
रायथल

1
@ रायथल - ठीक है, यह वास्तव में होगा :) "कार" ठीक काम करेगी। इसमें कोई टायर नहीं होगा लेकिन यह ठीक काम करेगा। तथ्य की बात के रूप में, यदि आप चाहते हैं कि आप पहियों को बर्बाद कर सकते हैं, लेकिन आप वास्तव में इसे भी चला सकते हैं। थोड़ा ऊबड़ हो सकता है :)
Rook

हाँ, बिल्कुल वैसा ही जैसा @ldigas ने कहा। कार शुरू होगी, रेडियो काम करेगा, सब कुछ काम करेगा, लेकिन आंदोलन का हिस्सा। मैं यही कहना चाह रहा था।
ऑस्कर गोडसन

जवाबों:


21

बिल्कुल नहीं --- मॉड्यूल को हटाने से सिस्टम अच्छी तरह से टूट सकता है। शिथिल युग्मित प्रणाली के पीछे का विचार यह है कि पूरी तरह से अलग मॉड्यूल में स्वैप करना ठीक काम करेगा जब तक नया मॉड्यूल पुराने इंटरफ़ेस के समान इंटरफ़ेस आवश्यकताओं के अनुरूप हो। यदि इसे कसकर युग्मित किया गया था, तो आसपास का कोड इंटर्नल के बारे में अनुमान लगाएगा और यदि एक नया मॉड्यूल शुरू किया गया था, तो यह विफल होना शुरू हो जाएगा।


+1: शानदार जवाब! मॉड्यूल को अन्य मॉड्यूल पर निर्भर होना चाहिए, लेकिन उनके आंतरिक कार्यान्वयन पर नहीं।
जियोर्जियो

5

ढीले युग्मन अनिवार्य रूप से मॉड्यूल के बीच अप्रत्यक्ष निर्भरता है कि वे कैसे विकसित हो सकते हैं।

आम तौर पर, जब एक कसकर युग्मित प्रणाली होती है तो विभिन्न मॉड्यूल / ऑब्जेक्ट में एक बहुत ही विशिष्ट व्यवहार होता है जो परिधीय वस्तुओं के व्यवहार को मानता है। ऐसी वस्तुओं को अन्य मॉड्यूल व्यवहारों से जोड़ा / युग्मित किया जाता है और उन्हें अलगाव या किसी अन्य संदर्भ में फिर से उपयोग नहीं किया जा सकता है।

हालांकि व्यक्तिगत कार्यक्षमता के लिए जिम्मेदार ऐसे मॉड्यूल स्वतंत्र रूप से विकसित नहीं हो सकते हैं या विकसित नहीं हो सकते हैं


एक उदाहरण:

मान लें कि आपके पास 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(यहां तक कि छुपा हुआ) जहां पिक्सल वास्तव में लिखा जाता है के बारे में ज्ञान नहीं होना चाहिए।


0

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

इसके अलावा, तंग युग्मन का मतलब है कि कुछ हिस्सा विशिष्ट मॉड्यूल कार्यान्वयन पर निर्भर करता है , न कि मॉड्यूल या कुछ की परिभाषा पर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.