Principes toepassen SOLID in C#: voorbeelden en best practices

Single Responsibility Principle(SRP)

Dit principe stelt dat elke klasse een enkele verantwoordelijkheid zou moeten hebben. Het benadrukt dat een klas één specifieke functie moet vervullen en niet te veel redenen heeft om te veranderen.

Voorbeeld: gebruikersinformatie beheren en e-mailmeldingen verzenden.

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)

Dit principe moedigt uitbreiding van functionaliteit aan door nieuwe code toe te voegen in plaats van bestaande code te wijzigen.

Voorbeeld: Afhandelen van verschillende betaalmethodes in een e-commerce applicatie.

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)

Dit principe stelt dat objecten van een afgeleide klasse substitueerbaar moeten zijn voor objecten van de basisklasse zonder de correctheid van het programma aan te tasten.

Voorbeeld: geometrische vormen beheren.

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)

Dit principe raadt aan om interfaces op te splitsen in kleinere om te voorkomen dat klassen gedwongen worden methoden te implementeren die ze niet nodig hebben.

Voorbeeld: Interfaces voor het bijwerken en weergeven van gegevens.

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

Dependency Inversion Principle(DIP)

Dit principe stelt voor om afhankelijkheidsinjectie te gebruiken om afhankelijkheden te beheren.

Voorbeeld: afhankelijkheidsinjectie gebruiken om afhankelijkheden te beheren.

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

Onthoud dat het toepassen van SOLID principes in C# flexibel moet gebeuren op basis van het specifieke doel van uw project en uw begrip van SOLID en C#.