Application SOLID des principes en C# : exemples et meilleures pratiques

Single Responsibility Principle(SRP)

Ce principe stipule que chaque classe doit avoir une seule responsabilité. Il souligne qu'une classe doit remplir une fonction spécifique et ne pas avoir trop de raisons de changer.

Exemple : Gestion des informations utilisateur et envoi de notifications par e-mail.

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)

Ce principe encourage l'extension des fonctionnalités en ajoutant du nouveau code plutôt qu'en modifiant le code existant.

Exemple: Gestion de différents modes de paiement dans une application e-commerce.

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)

Ce principe affirme que les objets d'une classe dérivée doivent être substituables aux objets de la classe de base sans affecter l'exactitude du programme.

Exemple: Gestion des formes géométriques.

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)

Ce principe conseille de diviser les interfaces en plus petites afin d'éviter de forcer les classes à implémenter des méthodes dont elles n'ont pas besoin.

Exemple: Interfaces de mise à jour et d'affichage des données.

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

Dependency Inversion Principle(DIP)

Ce principe suggère d'utiliser l'injection de dépendances pour gérer les dépendances.

Exemple : Utilisation de l'injection de dépendances pour gérer les dépendances.

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

N'oubliez pas que l'application SOLID des principes en C# doit être effectuée de manière flexible en fonction de l'objectif spécifique de votre projet et de votre compréhension de SOLID C#.