Applikazzjoni ta SOLID ' Prinċipji f'C#: Eżempji u l-Aħjar Prattiċi

Single Responsibility Principle(SRP)

Dan il-prinċipju jgħid li kull klassi għandu jkollha responsabbiltà waħda. Tenfasizza li klassi għandha twettaq funzjoni speċifika waħda u ma jkollhiex wisq raġunijiet biex tinbidel.

Eżempju: Ġestjoni tal-informazzjoni tal-utent u tibgħat notifiki bl-email.

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)

Dan il-prinċipju jinkoraġġixxi l-estensjoni tal-funzjonalità billi żżid kodiċi ġdid aktar milli jimmodifika kodiċi eżistenti.

Eżempju: Immaniġġjar ta' metodi ta' ħlas differenti f'applikazzjoni tal-kummerċ elettroniku.

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)

Dan il-prinċipju jasserixxi li oġġetti ta' klassi derivata għandhom ikunu sostitwibbli għal oġġetti tal-klassi bażi mingħajr ma jaffettwaw il-korrettezza tal-programm.

Eżempju: Ġestjoni ta' forom ġeometriċi.

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)

Dan il-prinċipju jagħti parir li l-interfaces jitkissru f'oħrajn iżgħar biex jiġi evitat li l-klassijiet jiġu mġiegħla jimplimentaw metodi li m'għandhomx bżonn.

Eżempju: Interfaces għall-aġġornament u l-wiri tad-dejta.

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

Dependency Inversion Principle(DIP)

Dan il-prinċipju jissuġġerixxi l-użu ta 'injezzjoni ta' dipendenza biex jimmaniġġjaw id-dipendenzi.

Eżempju: L-użu ta' injezzjoni ta' dipendenza biex timmaniġġja d-dipendenzi.

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

Ftakar li l-applikazzjoni tal SOLID -prinċipji fis-C# għandha ssir b'mod flessibbli abbażi tal-iskop speċifiku tal-proġett tiegħek u l-fehim tiegħek ta ' SOLID u C#.