Menerapkan SOLID Prinsip dalam C#: Contoh dan Praktik Terbaik

Single Responsibility Principle(SRP)

Prinsip ini menyatakan bahwa setiap kelas harus memiliki satu tanggung jawab. Ini menekankan bahwa kelas harus melakukan satu fungsi tertentu dan tidak memiliki terlalu banyak alasan untuk berubah.

Contoh: Mengelola informasi pengguna dan mengirimkan notifikasi 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)

Prinsip ini mendorong perluasan fungsionalitas dengan menambahkan kode baru daripada memodifikasi kode yang sudah ada.

Contoh: Menangani berbagai metode pembayaran dalam aplikasi e-niaga.

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)

Prinsip ini menegaskan bahwa objek dari kelas turunan harus dapat diganti dengan objek dari kelas dasar tanpa mempengaruhi kebenaran program.

Contoh: Mengelola bentuk geometris.

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)

Prinsip ini menyarankan memecah antarmuka menjadi yang lebih kecil untuk menghindari memaksa kelas untuk mengimplementasikan metode yang tidak mereka perlukan.

Contoh: Antarmuka untuk memperbarui dan menampilkan data.

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

Dependency Inversion Principle(DIP)

Prinsip ini menyarankan penggunaan injeksi ketergantungan untuk mengelola ketergantungan.

Contoh: Menggunakan injeksi ketergantungan untuk mengelola ketergantungan.

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

Ingatlah bahwa penerapan SOLID prinsip dalam C# harus dilakukan secara fleksibel berdasarkan tujuan spesifik proyek Anda dan pemahaman Anda tentang SOLID C#.