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.