Single Responsibility Principle(SRP)
Este principio establece que cada clase debe tener una sola responsabilidad. Enfatiza que una clase debe realizar una función específica y no tener demasiadas razones para cambiar.
Ejemplo: Gestión de la información de los usuarios y envío de notificaciones por correo electrónico.
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)
Este principio fomenta la extensión de la funcionalidad agregando código nuevo en lugar de modificar el código existente.
Ejemplo: Manejo de diferentes métodos de pago en una aplicación de comercio electrónico.
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)
Este principio afirma que los objetos de una clase derivada deben ser sustituibles por objetos de la clase base sin afectar la corrección del programa.
Ejemplo: Manejo de formas geométricas.
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)
Este principio aconseja dividir las interfaces en otras más pequeñas para evitar obligar a las clases a implementar métodos que no necesitan.
Ejemplo: Interfaces para actualización y visualización de datos.
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)
Este principio sugiere usar la inyección de dependencia para administrar las dependencias.
Ejemplo: Uso de inyección de dependencia para administrar dependencias.
class OrderProcessor
def initialize(db_connection, email_service)
@db_connection = db_connection
@email_service = email_service
end
end
Recuerde que la aplicación de SOLID los principios Ruby debe hacerse de manera flexible según el propósito específico de su proyecto y su comprensión de SOLID y Ruby.