SOLID میں اصولوں کا اطلاق Python: مثالیں اور بہترین طرز عمل

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