Single Responsibility Principle(SRP)
Ce principe stipule que chaque classe doit avoir une seule responsabilité. Il souligne qu'une classe doit remplir une fonction spécifique et ne pas avoir trop de raisons de changer.
Exemple : Gestion des informations utilisateur et envoi de notifications par 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)
Ce principe encourage l'extension des fonctionnalités en ajoutant du nouveau code plutôt qu'en modifiant le code existant.
Exemple: Gestion de différents modes de paiement dans une application e-commerce.
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)
Ce principe affirme que les objets d'une classe dérivée doivent être substituables aux objets de la classe de base sans affecter l'exactitude du programme.
Exemple: Gestion des formes géométriques.
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)
Ce principe conseille de diviser les interfaces en plus petites afin d'éviter de forcer les classes à implémenter des méthodes dont elles n'ont pas besoin.
Exemple: Interfaces de mise à jour et d'affichage des données.
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)
Ce principe suggère d'utiliser l'injection de dépendances pour gérer les dépendances.
Exemple : Utilisation de l'injection de dépendances pour gérer les dépendances.
class OrderProcessor
def initialize(db_connection, email_service)
@db_connection = db_connection
@email_service = email_service
end
end
N'oubliez pas que l'application SOLID des principes Ruby doit être faite avec souplesse en fonction de l'objectif spécifique de votre projet et de votre compréhension de SOLID et Ruby.