Single Responsibility Principle(SRP)
Denna princip säger att varje klass ska ha ett enda ansvar. Den betonar att en klass ska utföra en specifik funktion och inte ha för många skäl att ändra sig.
Exempel: Hantera användarinformation och skicka e-postmeddelanden.
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)
Denna princip uppmuntrar utökad funktionalitet genom att lägga till ny kod istället för att ändra befintlig kod.
Exempel: Hantera olika betalningsmetoder i en e-handelsapplikation.
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)
Denna princip hävdar att objekt av en härledd klass ska kunna ersättas med objekt av basklassen utan att påverka programmets korrekthet.
Exempel: Hantera geometriska former.
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)
Denna princip rekommenderar att dela upp gränssnitt i mindre för att undvika att tvinga klasser att implementera metoder de inte behöver.
Exempel: Gränssnitt för uppdatering och visning av 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)
Denna princip föreslår att man använder beroendeinjektion för att hantera beroenden.
Exempel: Använda beroendeinjektion för att hantera beroenden.
class OrderProcessor
def initialize(db_connection, email_service)
@db_connection = db_connection
@email_service = email_service
end
end
Kom ihåg att tillämpning av SOLID principer i Ruby bör göras flexibelt baserat på det specifika syftet med ditt projekt och din förståelse för SOLID och Ruby.