Single Responsibility Principle(SRP)
ينص هذا المبدأ على أن كل فئة يجب أن تتحمل مسؤولية واحدة. إنه يؤكد على أن الفصل الدراسي يجب أن يؤدي وظيفة واحدة محددة وليس لديه الكثير من الأسباب للتغيير.
مثال: إدارة معلومات المستخدم وإرسال إشعارات البريد الإلكتروني.
class UserManager:
def create_user(self, user_data):
# Logic for creating a user
pass
class EmailService:
def send_email(self, email_data):
# Logic for sending an email
pass
Open/Closed Principle(OCP)
يشجع هذا المبدأ على توسيع الوظائف عن طريق إضافة رمز جديد بدلاً من تعديل الكود الحالي.
مثال: التعامل مع طرق الدفع المختلفة في تطبيق التجارة الإلكترونية.
from abc import ABC, abstractmethod
class PaymentProcessor(ABC):
@abstractmethod
def process_payment(self):
pass
class CreditCardPaymentProcessor(PaymentProcessor):
def process_payment(self):
# Logic for processing credit card payment
pass
class PayPalPaymentProcessor(PaymentProcessor):
def process_payment(self):
# Logic for processing PayPal payment
pass
Liskov Substitution Principle(LSP)
يؤكد هذا المبدأ أن كائنات الفئة المشتقة يجب أن تكون قابلة للاستبدال بكائنات من الفئة الأساسية دون التأثير على صحة البرنامج.
مثال: إدارة الأشكال الهندسية.
class Shape:
def area(self):
pass
class Rectangle(Shape):
def area(self):
return self.width * self.height
class Square(Shape):
def area(self):
return self.side * self.side
Interface Segregation Principle(ISP)
ينصح هذا المبدأ بتقسيم الواجهات إلى واجهات أصغر لتجنب إجبار الفئات على تنفيذ الأساليب التي لا تحتاج إليها.
مثال: واجهات لتحديث البيانات وعرضها.
class UpdateableFeature:
@abstractmethod
def update_feature(self):
pass
class DisplayableFeature:
@abstractmethod
def display_feature(self):
pass
Dependency Inversion Principle(DIP)
يقترح هذا المبدأ استخدام حقن التبعية لإدارة التبعيات.
مثال: استخدام حقن التبعية لإدارة التبعيات.
class OrderProcessor:
def __init__(self, db_connection, email_service):
self.db_connection = db_connection
self.email_service = email_service
تذكر أن تطبيق SOLID المبادئ Python يجب أن يتم بمرونة بناءً على الغرض المحدد لمشروعك وفهمك لـ SOLID و Python.