C# में सिद्धांतों को लागू करना SOLID: उदाहरण और सर्वोत्तम अभ्यास

Single Responsibility Principle(SRP)

यह सिद्धांत कहता है कि प्रत्येक वर्ग की एक ही जिम्मेदारी होनी चाहिए। यह इस बात पर जोर देता है कि एक वर्ग को एक विशिष्ट कार्य करना चाहिए और बदलाव के लिए बहुत अधिक कारण नहीं होने चाहिए।

उदाहरण: उपयोगकर्ता जानकारी प्रबंधित करना और ईमेल सूचनाएं भेजना।

class UserManager {  
  public void CreateUser(UserData userData) {  
    // Logic to create a user  
  }  
}  
  
class EmailService {  
  public void SendEmail(EmailData emailData) {  
    // Logic to send an email  
  }  
}  

Open/Closed Principle(OCP)

यह सिद्धांत मौजूदा कोड को संशोधित करने के बजाय नया कोड जोड़कर कार्यक्षमता बढ़ाने को प्रोत्साहित करता है।

उदाहरण: ई-कॉमर्स एप्लिकेशन में विभिन्न भुगतान विधियों को संभालना।

abstract class PaymentProcessor {  
  public abstract void ProcessPayment();  
}  
  
class CreditCardPaymentProcessor: PaymentProcessor {  
  public override void ProcessPayment() {  
    // Logic to process credit card payment  
  }  
}  
  
class PayPalPaymentProcessor: PaymentProcessor {  
  public override void ProcessPayment() {  
    // Logic to process PayPal payment  
  }  
}  

Liskov Substitution Principle(LSP)

यह सिद्धांत इस बात पर जोर देता है कि व्युत्पन्न वर्ग की वस्तुओं को कार्यक्रम की शुद्धता को प्रभावित किए बिना आधार वर्ग की वस्तुओं के लिए प्रतिस्थापित किया जाना चाहिए।

उदाहरण: ज्यामितीय आकृतियों का प्रबंधन।

abstract class Shape {  
  public abstract double CalculateArea();  
}  
  
class Rectangle: Shape {  
  public override double CalculateArea() {  
    // Logic to calculate area of rectangle  
  }  
}  
  
class Square: Shape {  
  public override double CalculateArea() {  
    // Logic to calculate area of square  
  }  
}  

Interface Segregation Principle(ISP)

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

उदाहरण: डेटा को अद्यतन करने और प्रदर्शित करने के लिए इंटरफ़ेस।

interface IUpdateableFeature {  
  void UpdateFeature();  
}  
  
interface IDisplayableFeature {  
  void DisplayFeature();  
}  

Dependency Inversion Principle(DIP)

यह सिद्धांत निर्भरताओं को प्रबंधित करने के लिए निर्भरता इंजेक्शन का उपयोग करने का सुझाव देता है।

उदाहरण: निर्भरताओं को प्रबंधित करने के लिए निर्भरता इंजेक्शन का उपयोग करना।

class OrderProcessor {  
  private readonly DBConnection _dbConnection;  
  private readonly EmailService _emailService;  
  
  public OrderProcessor(DBConnection dbConnection, EmailService emailService) {  
    _dbConnection = dbConnection;  
    _emailService = emailService;  
  }  
}  

याद रखें कि SOLID C# में सिद्धांतों को लागू करना आपके प्रोजेक्ट के विशिष्ट उद्देश्य और SOLID C# के बारे में आपकी समझ के आधार पर लचीले ढंग से किया जाना चाहिए।