Single Responsibility Principle(SRP)
Acest principiu prevede că fiecare clasă ar trebui să aibă o singură responsabilitate. Subliniază faptul că o clasă ar trebui să îndeplinească o funcție specifică și să nu aibă prea multe motive să se schimbe.
Exemplu: gestionarea informațiilor despre utilizator și trimiterea notificărilor prin 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)
Acest principiu încurajează extinderea funcționalității prin adăugarea de cod nou, mai degrabă decât prin modificarea codului existent.
Exemplu: gestionarea diferitelor metode de plată într-o aplicație de comerț electronic.
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)
Acest principiu afirmă că obiectele unei clase derivate ar trebui să fie substituibile cu obiectele clasei de bază fără a afecta corectitudinea programului.
Exemplu: gestionarea formelor geometrice.
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)
Acest principiu recomandă împărțirea interfețelor în altele mai mici pentru a evita forțarea claselor să implementeze metode de care nu au nevoie.
Exemplu: Interfețe pentru actualizarea și afișarea datelor.
interface IUpdateableFeature {
void UpdateFeature();
}
interface IDisplayableFeature {
void DisplayFeature();
}
Dependency Inversion Principle(DIP)
Acest principiu sugerează utilizarea injecției de dependențe pentru a gestiona dependențe.
Exemplu: Utilizarea injecției de dependențe pentru a gestiona dependențe.
class OrderProcessor {
private readonly DBConnection _dbConnection;
private readonly EmailService _emailService;
public OrderProcessor(DBConnection dbConnection, EmailService emailService) {
_dbConnection = dbConnection;
_emailService = emailService;
}
}
Amintiți-vă că aplicarea SOLID principiilor în C# ar trebui făcută în mod flexibil, pe baza scopului specific al proiectului dvs. și a înțelegerii dvs. despre SOLID și C#.