Single Responsibility Principle(SRP)
Ez az elv kimondja, hogy minden osztálynak egyetlen felelőssége kell legyen. Hangsúlyozza, hogy egy osztálynak egy meghatározott funkciót kell ellátnia, és ne legyen túl sok oka a változtatásra.
Példa: Felhasználói adatok kezelése és e-mailes értesítések küldése.
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)
Ez az elv a meglévő kód módosítása helyett a funkcionalitás bővítését ösztönzi új kód hozzáadásával.
Példa: Különféle fizetési módok kezelése egy e-kereskedelmi alkalmazásban.
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)
Ez az elv azt állítja, hogy a származtatott osztály objektumai helyettesíthetők az alaposztály objektumaival anélkül, hogy ez befolyásolná a program helyességét.
Példa: Geometriai alakzatok kezelése.
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)
Ez az elv azt tanácsolja, hogy az interfészeket kisebbre bontsa, nehogy az osztályok olyan módszereket kényszerítsenek, amelyekre nincs szükségük.
Példa: Interfészek adatok frissítéséhez és megjelenítéséhez.
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)
Ez az elv azt javasolja, hogy a függőségi injektálást használjuk a függőségek kezelésére.
Példa: Függőség-injektálás használata függőségek kezelésére.
class OrderProcessor
def initialize(db_connection, email_service)
@db_connection = db_connection
@email_service = email_service
end
end
Ne feledje, hogy SOLID az alapelvek alkalmazását Ruby rugalmasan kell végrehajtani a projekt konkrét célja és SOLID a és a Ruby.