Single Responsibility Principle(SRP)
Šis principas teigia, kad kiekviena klasė turi turėti vieną atsakomybę. Jame pabrėžiama, kad klasė turi atlikti vieną konkrečią funkciją ir neturėti per daug priežasčių keistis.
Pavyzdys: vartotojo informacijos tvarkymas ir pranešimų el. paštu siuntimas.
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)
Šis principas skatina išplėsti funkcionalumą pridedant naują kodą, o ne keičiant esamą kodą.
Pavyzdys: skirtingų mokėjimo būdų tvarkymas el. prekybos programoje.
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)
Šis principas teigia, kad išvestinės klasės objektai turi būti pakeisti bazinės klasės objektais, nepažeidžiant programos teisingumo.
Pavyzdys: Geometrinių figūrų valdymas.
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)
Šis principas pataria suskaidyti sąsajas į mažesnes, kad klasės nebūtų verčiamos įgyvendinti metodus, kurių joms nereikia.
Pavyzdys: sąsajos duomenims atnaujinti ir rodyti.
interface IUpdateableFeature {
void UpdateFeature();
}
interface IDisplayableFeature {
void DisplayFeature();
}
Dependency Inversion Principle(DIP)
Pagal šį principą priklausomybių valdymui naudoti priklausomybės injekciją.
Pavyzdys: priklausomybės injekcijos naudojimas priklausomybėms valdyti.
class OrderProcessor {
private readonly DBConnection _dbConnection;
private readonly EmailService _emailService;
public OrderProcessor(DBConnection dbConnection, EmailService emailService) {
_dbConnection = dbConnection;
_emailService = emailService;
}
}
Atminkite, kad SOLID principų taikymas C# turėtų būti atliekamas lanksčiai, atsižvelgiant į konkretų jūsų projekto tikslą ir jūsų supratimą apie SOLID bei C#.