Single Responsibility Principle(SRP)
Ky parim thotë se çdo klasë duhet të ketë një përgjegjësi të vetme. Ai thekson se një klasë duhet të kryejë një funksion specifik dhe të mos ketë shumë arsye për të ndryshuar.
Shembull: Menaxhimi i informacionit të përdoruesit dhe dërgimi i njoftimeve me email.
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)
Ky parim inkurajon zgjerimin e funksionalitetit duke shtuar kod të ri në vend të modifikimit të kodit ekzistues.
Shembull: Trajtimi i metodave të ndryshme të pagesës në një aplikacion e-commerce.
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)
Ky parim pohon se objektet e një klase të derivuar duhet të jenë të zëvendësueshme për objektet e klasës bazë pa ndikuar në korrektësinë e programit.
Shembull: Menaxhimi i formave gjeometrike.
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)
Ky parim këshillon ndarjen e ndërfaqeve në më të vogla për të shmangur detyrimin e klasave për të zbatuar metoda që nuk u duhen.
Shembull: Ndërfaqet për përditësimin dhe shfaqjen e të dhënave.
class UpdateableFeature:
@abstractmethod
def update_feature(self):
pass
class DisplayableFeature:
@abstractmethod
def display_feature(self):
pass
Dependency Inversion Principle(DIP)
Ky parim sugjeron përdorimin e injektimit të varësisë për të menaxhuar varësitë.
Shembull: Përdorimi i injektimit të varësisë për të menaxhuar varësitë.
class OrderProcessor:
def __init__(self, db_connection, email_service):
self.db_connection = db_connection
self.email_service = email_service
Mos harroni se zbatimi i SOLID parimeve në Python duhet të bëhet në mënyrë fleksibël bazuar në qëllimin specifik të projektit tuaj dhe të kuptuarit tuaj të SOLID dhe Python.