Single Responsibility Principle(SRP)
Dit principe stelt dat elke klasse een enkele verantwoordelijkheid zou moeten hebben. Het benadrukt dat een klas één specifieke functie moet vervullen en niet te veel redenen heeft om te veranderen.
Voorbeeld: gebruikersinformatie beheren en e-mailmeldingen verzenden.
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)
Dit principe moedigt uitbreiding van functionaliteit aan door nieuwe code toe te voegen in plaats van bestaande code te wijzigen.
Voorbeeld: Afhandelen van verschillende betaalmethodes in een e-commerce applicatie.
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)
Dit principe stelt dat objecten van een afgeleide klasse substitueerbaar moeten zijn voor objecten van de basisklasse zonder de correctheid van het programma aan te tasten.
Voorbeeld: geometrische vormen beheren.
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)
Dit principe raadt aan om interfaces op te splitsen in kleinere om te voorkomen dat klassen gedwongen worden methoden te implementeren die ze niet nodig hebben.
Voorbeeld: Interfaces voor het bijwerken en weergeven van gegevens.
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)
Dit principe stelt voor om afhankelijkheidsinjectie te gebruiken om afhankelijkheden te beheren.
Voorbeeld: afhankelijkheidsinjectie gebruiken om afhankelijkheden te beheren.
class OrderProcessor
def initialize(db_connection, email_service)
@db_connection = db_connection
@email_service = email_service
end
end
Onthoud dat het toepassen van SOLID principes Ruby flexibel moet gebeuren op basis van het specifieke doel van uw project en uw begrip van SOLID en Ruby.