Menerapkan SOLID Prinsip dalam Ruby: Contoh dan Amalan Terbaik

Single Responsibility Principle(SRP)

Prinsip ini menyatakan bahawa setiap kelas harus mempunyai satu tanggungjawab. Ia menekankan bahawa kelas harus melaksanakan satu fungsi tertentu dan tidak mempunyai terlalu banyak sebab untuk berubah.

Contoh: Mengurus maklumat pengguna dan menghantar pemberitahuan e-mel.

class UserManager  
  def create_user(user_data)  
    # Logic for creating a user  
  end  
end  
  
class EmailService  
  def send_email(email_data)  
    # Logic for sending an email  
  end  
end  

Open/Closed Principle(OCP)

Prinsip ini menggalakkan memperluaskan fungsi dengan menambah kod baharu dan bukannya mengubah suai kod sedia ada.

Contoh: Mengendalikan kaedah pembayaran yang berbeza dalam aplikasi e-dagang.

class PaymentProcessor  
  def process_payment  
    # Common logic for payment processing  
  end  
end  
  
class CreditCardPaymentProcessor < PaymentProcessor  
  def process_payment  
    # Logic for processing credit card payment  
  end  
end  
  
class PayPalPaymentProcessor < PaymentProcessor  
  def process_payment  
    # Logic for processing PayPal payment  
  end  
end  

Liskov Substitution Principle(LSP)

Prinsip ini menegaskan bahawa objek kelas terbitan harus digantikan untuk objek kelas asas tanpa menjejaskan ketepatan program.

Contoh: Menguruskan bentuk geometri.

class Shape  
  def area  
    # Common logic for calculating area  
  end  
end  
  
class Rectangle < Shape  
  def area  
    # Logic for calculating area of rectangle  
  end  
end  
  
class Square < Shape  
  def area  
    # Logic for calculating area of square  
  end  
end  

Interface Segregation Principle(ISP)

Prinsip ini menasihatkan memecahkan antara muka kepada yang lebih kecil untuk mengelakkan memaksa kelas melaksanakan kaedah yang mereka tidak perlukan.

Contoh: Antara muka untuk mengemas kini dan memaparkan data.

module UpdateableFeature  
  def update_feature  
    # Logic for updating feature  
  end  
end  
  
module DisplayableFeature  
  def display_feature  
    # Logic for displaying feature  
  end  
end  

Dependency Inversion Principle(DIP)

Prinsip ini mencadangkan menggunakan suntikan kebergantungan untuk mengurus kebergantungan.

Contoh: Menggunakan suntikan tanggungan untuk mengurus tanggungan.

class OrderProcessor  
  def initialize(db_connection, email_service)  
    @db_connection = db_connection  
    @email_service = email_service  
  end  
end  

Ingat bahawa penggunaan SOLID prinsip dalam Ruby harus dilakukan secara fleksibel berdasarkan tujuan khusus projek anda dan pemahaman anda tentang SOLID dan Ruby.