Single Responsibility Principle(SRP)
ينص هذا المبدأ على أن كل فئة يجب أن تتحمل مسؤولية واحدة. إنه يؤكد على أن الفصل الدراسي يجب أن يؤدي وظيفة واحدة محددة وليس لديه الكثير من الأسباب للتغيير.
مثال: إدارة معلومات المستخدم وإرسال إشعارات البريد الإلكتروني.
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)
يشجع هذا المبدأ على توسيع الوظائف عن طريق إضافة رمز جديد بدلاً من تعديل الكود الحالي.
مثال: التعامل مع طرق الدفع المختلفة في تطبيق التجارة الإلكترونية.
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)
يؤكد هذا المبدأ أن كائنات الفئة المشتقة يجب أن تكون قابلة للاستبدال بكائنات من الفئة الأساسية دون التأثير على صحة البرنامج.
مثال: إدارة الأشكال الهندسية.
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)
ينصح هذا المبدأ بتقسيم الواجهات إلى واجهات أصغر لتجنب إجبار الفئات على تنفيذ الأساليب التي لا تحتاج إليها.
مثال: واجهات لتحديث البيانات وعرضها.
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)
يقترح هذا المبدأ استخدام حقن التبعية لإدارة التبعيات.
مثال: استخدام حقن التبعية لإدارة التبعيات.
class OrderProcessor
def initialize(db_connection, email_service)
@db_connection = db_connection
@email_service = email_service
end
end
تذكر أن تطبيق SOLID المبادئ Ruby يجب أن يتم بمرونة بناءً على الغرض المحدد لمشروعك وفهمك لـ SOLID و Ruby.