Single Responsibility Principle(SRP)
Questo principio afferma che ogni classe dovrebbe avere un'unica responsabilità. Sottolinea che una classe dovrebbe svolgere una funzione specifica e non avere troppe ragioni per cambiare.
Esempio: gestione delle informazioni utente e invio di notifiche e-mail.
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)
Questo principio incoraggia l'estensione della funzionalità aggiungendo nuovo codice anziché modificare il codice esistente.
Esempio: gestione di diversi metodi di pagamento in un'applicazione di 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)
Questo principio afferma che gli oggetti di una classe derivata dovrebbero essere sostituibili con gli oggetti della classe base senza influire sulla correttezza del programma.
Esempio: gestione delle forme geometriche.
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)
Questo principio consiglia di suddividere le interfacce in interfacce più piccole per evitare di forzare le classi a implementare metodi di cui non hanno bisogno.
Esempio: interfacce per l'aggiornamento e la visualizzazione dei dati.
class UpdateableFeature:
@abstractmethod
def update_feature(self):
pass
class DisplayableFeature:
@abstractmethod
def display_feature(self):
pass
Dependency Inversion Principle(DIP)
Questo principio suggerisce di utilizzare l'inserimento delle dipendenze per gestire le dipendenze.
Esempio: utilizzo dell'inserimento delle dipendenze per gestire le dipendenze.
class OrderProcessor:
def __init__(self, db_connection, email_service):
self.db_connection = db_connection
self.email_service = email_service
Ricorda che l'applicazione SOLID dei principi in Python dovrebbe essere fatta in modo flessibile in base allo scopo specifico del tuo progetto e alla tua comprensione di SOLID e Python.