Single Responsibility Principle(SRP)
Acest principiu prevede că fiecare clasă ar trebui să aibă o singură responsabilitate. Subliniază faptul că o clasă ar trebui să îndeplinească o funcție specifică și să nu aibă prea multe motive să se schimbe.
Exemplu: gestionarea informațiilor despre utilizator și trimiterea notificărilor prin e-mail.
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)
Acest principiu încurajează extinderea funcționalității prin adăugarea de cod nou, mai degrabă decât prin modificarea codului existent.
Exemplu: gestionarea diferitelor metode de plată într-o aplicație de comerț electronic.
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)
Acest principiu afirmă că obiectele unei clase derivate ar trebui să fie substituibile cu obiectele clasei de bază fără a afecta corectitudinea programului.
Exemplu: gestionarea formelor geometrice.
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)
Acest principiu recomandă împărțirea interfețelor în altele mai mici pentru a evita forțarea claselor să implementeze metode de care nu au nevoie.
Exemplu: Interfețe pentru actualizarea și afișarea datelor.
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)
Acest principiu sugerează utilizarea injecției de dependențe pentru a gestiona dependențe.
Exemplu: Utilizarea injecției de dependențe pentru a gestiona dependențe.
class OrderProcessor
def initialize(db_connection, email_service)
@db_connection = db_connection
@email_service = email_service
end
end
Amintiți-vă că aplicarea SOLID principiilor în Ruby ar trebui să fie făcută în mod flexibil, pe baza scopului specific al proiectului dvs. și a înțelegerii dvs. despre SOLID și Ruby.