Single Responsibility Principle(SRP)
Αυτή η αρχή ορίζει ότι κάθε τάξη πρέπει να έχει μια ενιαία ευθύνη. Τονίζει ότι μια κλάση πρέπει να εκτελεί μια συγκεκριμένη λειτουργία και να μην έχει πάρα πολλούς λόγους να αλλάξει.
Παράδειγμα: Διαχείριση πληροφοριών χρήστη και αποστολή ειδοποιήσεων μέσω 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)
Αυτή η αρχή ενθαρρύνει την επέκταση της λειτουργικότητας με την προσθήκη νέου κώδικα αντί της τροποποίησης του υπάρχοντος κώδικα.
Παράδειγμα: Χειρισμός διαφορετικών μεθόδων πληρωμής σε μια εφαρμογή ηλεκτρονικού εμπορίου.
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)
Αυτή η αρχή υποστηρίζει ότι τα αντικείμενα μιας παραγόμενης κλάσης θα πρέπει να μπορούν να αντικατασταθούν με αντικείμενα της βασικής κλάσης χωρίς να επηρεάζεται η ορθότητα του προγράμματος.
Παράδειγμα: Διαχείριση γεωμετρικών σχημάτων.
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)
Αυτή η αρχή συμβουλεύει να σπάσουμε τις διεπαφές σε μικρότερες για να αποφευχθεί ο εξαναγκασμός των κλάσεων να εφαρμόσουν μεθόδους που δεν χρειάζονται.
Παράδειγμα: Διεπαφές για ενημέρωση και εμφάνιση δεδομένων.
interface IUpdateableFeature {
void UpdateFeature();
}
interface IDisplayableFeature {
void DisplayFeature();
}
Dependency Inversion Principle(DIP)
Αυτή η αρχή προτείνει τη χρήση της ένεσης εξάρτησης για τη διαχείριση των εξαρτήσεων.
Παράδειγμα: Χρήση της ένεσης εξάρτησης για τη διαχείριση εξαρτήσεων.
class OrderProcessor {
private readonly DBConnection _dbConnection;
private readonly EmailService _emailService;
public OrderProcessor(DBConnection dbConnection, EmailService emailService) {
_dbConnection = dbConnection;
_emailService = emailService;
}
}
Να θυμάστε ότι η εφαρμογή SOLID αρχών στην C# θα πρέπει να γίνεται με ευελιξία με βάση τον συγκεκριμένο σκοπό του έργου σας και την κατανόησή σας SOLID και την C#.