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

C# में इंटरफेस सेग्रिगेशन सिद्धांत (ISP) क्या है और इसे कैसे लागू करें

क्लाइंट्स को उन इंटरफेस पर निर्भर करने के लिए मजबूर नहीं किया जाना चाहिए जिनका वे उपयोग नहीं करते।

इंटरफेस सेग्रिगेशन सिद्धांत बताता है कि क्लाइंट्स को उन इंटरफेस को लागू करने के लिए मजबूर नहीं किया जाना चाहिए जिनका वे उपयोग नहीं करते।

एक फैट इंटरफेस के बजाय, मेथड्स के समूहों के आधार पर कई छोटे इंटरफेस पसंद किए जाते हैं, प्रत्येक एक सबमॉड्यूल की सेवा करता है।

इंटरफेस सेग्रिगेशन से पहले (फैट इंटरफेस)

public interface IProduct
{
    int ID { get; set; }
    double Weight { get; set; }
    int Stock { get; set; }
    int Inseam { get; set; }      // केवल पैंट्स के लिए
    int WaistSize { get; set; }   // केवल पैंट्स के लिए
}

public class Jeans : IProduct
{
    public int ID { get; set; }
    public double Weight { get; set; }
    public int Stock { get; set; }
    public int Inseam { get; set; }
    public int WaistSize { get; set; }
}

public class BaseballCap : IProduct
{
    public int ID { get; set; }
    public double Weight { get; set; }
    public int Stock { get; set; }
    public int Inseam { get; set; }      // अनावश्यक!
    public int WaistSize { get; set; }   // अनावश्यक!
    public int HatSize { get; set; }
}

समस्या: BaseballCap को Inseam और WaistSize लागू करने के लिए मजबूर किया जाता है जिनकी उसे आवश्यकता नहीं है।

इंटरफेस सेग्रिगेशन के बाद (छोटे इंटरफेस)

// सामान्य उत्पाद प्रॉपर्टीज
public interface IProduct
{
    int ID { get; set; }
    double Weight { get; set; }
    int Stock { get; set; }
}

// पैंट्स-विशिष्ट प्रॉपर्टीज
public interface IPants
{
    int Inseam { get; set; }
    int WaistSize { get; set; }
}

// हैट-विशिष्ट प्रॉपर्टीज
public interface IHat
{
    int HatSize { get; set; }
}

// अब प्रत्येक क्लास केवल वही लागू करती है जिसकी उसे आवश्यकता है
public class Jeans : IProduct, IPants
{
    public int ID { get; set; }
    public double Weight { get; set; }
    public int Stock { get; set; }
    public int Inseam { get; set; }
    public int WaistSize { get; set; }
}

public class BaseballCap : IProduct, IHat
{
    public int ID { get; set; }
    public double Weight { get; set; }
    public int Stock { get; set; }
    public int HatSize { get; set; }
}

ISP के लाभ

  • कम कपलिंग: क्लाइंट्स केवल वही निर्भर करते हैं जिसकी उन्हें आवश्यकता है
  • बेहतर टेस्टेबिलिटी: छोटे इंटरफेस मॉक करना आसान होता है
  • मेंटेनेबिलिटी: एक इंटरफेस में बदलाव असंबंधित क्लासेस को प्रभावित नहीं करता
  • लचीलापन: क्लासेस कई इंटरफेस लागू कर सकती हैं (मल्टीपल इंप्लीमेंटेशन)
  • SRP अनुपालन: प्रत्येक इंटरफेस की एक जिम्मेदारी होती है

ISP उल्लंघन के संकेत

  • इंटरफेस में कई मेथड्स हैं जिनका सभी कार्यान्वयनकर्ता उपयोग नहीं करते
  • कार्यान्वयनकर्ता throw new NotImplementedException() का उपयोग करते हैं
  • इंटरफेस का नाम "I...Service", "I...Manager" जैसे सामान्य है
  • क्लासेस इंटरफेस के बड़े हिस्से को अनदेखा करती हैं

व्यावहारिक उदाहरण: IDisposable बनाम IAsyncDisposable

// .NET Core 3.0+ में अलग इंटरफेस
public interface IDisposable
{
    void Dispose();
}

public interface IAsyncDisposable
{
    ValueTask DisposeAsync();
}

// क्लास केवल वही लागू करती है जिसकी आवश्यकता है
public class FileHandler : IDisposable { ... }
public class DbConnection : IDisposable, IAsyncDisposable { ... }

सारांश

"कई क्लाइंट-विशिष्ट इंटरफेस एक सामान्य-उद्देश्य इंटरफेस से बेहतर हैं।" - रॉबर्ट सी. मार्टिन
  1. MeWe क्या है और यह कैसे अलग है? MeWe क्या है और यह कैसे अलग है?

    खुद को नेक्स्ट जेनरेशन सोशल नेटवर्क बताने वाला MeWe, फेसबुक जैसे लोकप्रिय प्लेटफॉर्म्स का विकल्प बनने के लिए डिजाइन किया गया है। यह उतना युवा स्टार्टअप नहीं है जितना आप सोच सकते हैं, क्योंकि इसकी स्थापना 2012 में हुई थी, लेकिन इसने अपनी छोटे पैमाने की बीटा टेस्टिंग पहल केवल 2015 में छोड़ी। तब से इसन

  1.  पेंट 3D  क्या है, और इसका उपयोग कैसे किया जाता है? "पेंट 3D" क्या है, और इसका उपयोग कैसे किया जाता है?

    यदि आप विंडोज 10 का उपयोग करते हैं, तो आपने हाल ही में अपने कंप्यूटर पर पेंट 3D नामक एक अजीब ऐप देखा होगा। एक नज़र में, यह सदाबहार विंडोज ऐप पेंट के समान लगता है जो विंडोज के प्रत्येक संस्करण में एक मुख्य आधार रहा है। लेकिन अंत में 3D का क्या मतलब है? क्या यह सिर्फ पेंट का एक संशोधित संस्करण है, या

  1. BIOS समझाया गया: अपने PC फर्मवेयर को कैसे और क्यों अपडेट करें BIOS समझाया गया: अपने PC फर्मवेयर को कैसे और क्यों अपडेट करें

    BIOS क्या है और BIOS को कैसे अपडेट करें: जब भी आप अपने PC में कीबोर्ड, पावर या सॉफ्टवेयर जैसे इंटरनेट कनेक्टिविटी, PC की गति, आदि से संबंधित किसी समस्या का सामना करते हैं, तो ज्यादातर बार समस्या किसी न किसी तरह BIOS से जुड़ी होती है। यदि आप किसी मरम्मत या IT व्यक्ति से इस बारे में सलाह लेते हैं तो