SOLID İlkeleri C# Dilinde Uygulama: Örnekler ve En İyi Uygulamalar

Single Responsibility Principle(SRP)

Bu ilke, her sınıfın tek bir sorumluluğu olması gerektiğini belirtir. Bir sınıfın belirli bir işlevi yerine getirmesi gerektiğini ve değişmek için çok fazla nedeni olmaması gerektiğini vurgular.

Örnek: Kullanıcı bilgilerini yönetme ve e-posta bildirimleri gönderme.

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)

Bu ilke, mevcut kodu değiştirmek yerine yeni kod ekleyerek işlevselliği genişletmeyi teşvik eder.

Örnek: Bir e-ticaret uygulamasında farklı ödeme yöntemlerinin kullanılması.

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)

Bu ilke, türetilmiş bir sınıfın nesnelerinin, programın doğruluğunu etkilemeden temel sınıfın nesnelerinin yerine geçebileceğini iddia eder.

Örnek: Geometrik şekilleri yönetme.

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)

Bu ilke, sınıfları ihtiyaç duymadıkları yöntemleri uygulamaya zorlamaktan kaçınmak için arabirimleri daha küçük olanlara ayırmayı önerir.

Örnek: Verileri güncellemek ve görüntülemek için arayüzler.

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

Dependency Inversion Principle(DIP)

Bu ilke, bağımlılıkları yönetmek için bağımlılık enjeksiyonunun kullanılmasını önerir.

Örnek: Bağımlılıkları yönetmek için bağımlılık enjeksiyonunu kullanma.

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

C#'ta ilkeleri uygulamanın, SOLID projenizin özel amacına ve sizin SOLID C# anlayışınıza göre esnek bir şekilde yapılması gerektiğini unutmayın.