Voici une cheatsheet Python exhaustive en français :
Patterns créationnels
Singleton
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(Singleton, cls).__new__(cls)
return cls._instance
Utilisé pour contrôler l'accès à une ressource unique par exemple une base de données.
Patterns structurels
Facade
class SubSystemA:
def operation_a(self):
print("Opération A")
class SubSystemB:
def operation_b(self):
print("Opération B")
class Facade:
def __init__(self, subsystem_a: SubSystemA, subsystem_b: SubSystemB):
self.subsystem_a = subsystem_a
self.subsystem_b = subsystem_b
def operation(self):
self.subsystem_a.operation_a()
self.subsystem_b.operation_b()
Utilisé pour simplifier les interfaces complexes.
Patterns comportementaux
Observer
class Observable:
def __init__(self):
self._observers = []
def register_observer(self, observer):
if observer not in self._observers:
self._observers.append(observer)
def unregister_observer(self, observer):
if observer in self._observers:
self._observers.remove(observer)
def notify_observers(self, message):
for observer in self._observers:
observer.update(message)
class Observer:
def update(self, message):
print(f"Reçu : {message}")
Utilisé pour mettre en place des systèmes événementiels.
Strategy
from abc import ABC, abstractmethod
class PaymentStrategy(ABC):
@abstractmethod
def pay(self, amount):
pass
class CreditCardPayment(PaymentStrategy):
def pay(self, amount):
print(f"Paiement par carte de crédit : {amount}")
class PayPalPayment(PaymentStrategy):
def pay(self, amount):
print(f"Paiement via PayPal : {amount}")
Utilisé pour définir une famille d'algorithmes et les rendre interremplaçables.
Ceci représente un aperçu des principaux patterns en Python. N'hésitez pas à demander plus de détails sur chaque pattern ou à ajouter des exemples supplémentaires selon vos besoins !