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
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 mendorong perluasan fungsionalitas dengan menambahkan kode baru daripada memodifikasi kode yang sudah ada.
Contoh: Menangani berbagai metode pembayaran dalam aplikasi e-niaga.
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 bahwa objek dari kelas turunan harus dapat diganti dengan objek dari kelas dasar tanpa mempengaruhi kebenaran program.
Contoh: Mengelola bentuk geometris.
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 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.
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 menyarankan penggunaan injeksi ketergantungan untuk mengelola ketergantungan.
Contoh: Menggunakan injeksi ketergantungan untuk mengelola ketergantungan.
class OrderProcessor
def initialize(db_connection, email_service)
@db_connection = db_connection
@email_service = email_service
end
end
Ingatlah bahwa menerapkan SOLID prinsip-prinsip Ruby harus dilakukan secara fleksibel berdasarkan tujuan khusus proyek Anda dan pemahaman Anda tentang SOLID dan Ruby.