Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में कपलिंग (Coupling): टाइट बनाम लूज़


कपलिंग (Coupling) मॉड्यूल्स (क्लासेस) के बीच परस्पर निर्भरता की डिग्री है। अच्छा डिज़ाइन लूज़ कपलिंग को बढ़ावा देता है।

लूज़ कपलिंग (Loose Coupling) - वांछनीय

  • क्लासेस एक-दूसरे पर न्यूनतम निर्भर करती हैं।
  • इंटरफेस/अब्स्ट्रैक्शन पर निर्भर, कंक्रीट इम्प्लीमेंटेशन पर नहीं।
  • डिपेंडेंसी इंजेक्शन (DI) इसका मुख्य पैटर्न है।

लाभ:

  • एक मॉड्यूल का परिवर्तन दूसरों को नहीं तोड़ता।
  • टेस्टेबिलिटी बढ़ाता है (मॉकिंग आसान)।
  • कोड रखरखाव आसान।
  • अन्य घटकों में परिवर्तन से कम प्रभावित।
  • पुन: उपयोग योग्य घटक।

टाइट कपलिंग (Tight Coupling) - टालें

  • क्लासेस एक-दूसरे की कंक्रीट इम्प्लीमेंटेशन पर सीधे निर्भर।
  • new ConcreteClass() सीधे कंस्ट्रक्टर में।
  • परिवर्तन का प्रभाव फैलता है (रिपल इफेक्ट)।
  • परीक्षण कठिन (मॉक करना मुश्किल)।
  • पुन: उपयोग सीमित।

उदाहरण तुलना

// टाइट कपलिंग
class OrderService
{
    private SqlRepository repo = new SqlRepository(); // कंक्रीट पर निर्भर
    public void Save(Order o) => repo.Save(o);
}

// लूज़ कपलिंग
interface IRepository { void Save(Order o); }

class OrderService
{
    private readonly IRepository repo;
    public OrderService(IRepository repo) => this.repo = repo; // DI
    public void Save(Order o) => repo.Save(o);
}

सिद्धांत: "अब्स्ट्रैक्शन पर निर्भर करें, कंक्रीशन पर नहीं" (DIP - डिपेंडेंसी इनवर्जन प्रिंसिपल)।

  1. जावास्क्रिप्ट में मॉड्यूल क्या हैं? जावास्क्रिप्ट में मॉड्यूल क्या हैं?

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

  1. जावास्क्रिप्ट मॉड्यूल्स जावास्क्रिप्ट मॉड्यूल्स

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

  1. जावास्क्रिप्ट मॉड्यूल्स को डायनामिकली लोड करना जावास्क्रिप्ट मॉड्यूल्स को डायनामिकली लोड करना

    जावास्क्रिप्ट मॉड्यूल्स को डायनामिकली लोड करने का कोड निम्नलिखित है - नोट - इस उदाहरण को चलाने के लिए आपको एक लोकलहोस्ट सर्वर चलाने की आवश्यकता होगी। उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, init