PythonApplicationTemplate/app/core/observer_manager.py
2025-07-11 14:33:17 +02:00

40 lines
1.4 KiB
Python

from typing import Callable, Dict, List, Any
class NotificationType:
THEME = 0
LANGUAGE = 1
class ObserverManager:
"""
Gestionnaire d'observateurs pour gérer les événements et notifier les abonnés.
Chaque événement est identifié par une clé (string), et les abonnés sont des callbacks.
"""
def __init__(self):
self.observers: Dict[str, List[Callable[[Any], None]]] = {}
def subscribe(self, event: str, callback: Callable[[Any], None]) -> None:
"""
Ajoute un callback à la liste des abonnés pour l'événement donné.
"""
if event not in self.observers:
self.observers[event] = []
if callback not in self.observers[event]:
self.observers[event].append(callback)
def unsubscribe(self, event: str, callback: Callable[[Any], None]) -> None:
"""
Retire un callback de la liste des abonnés pour l'événement donné.
"""
if event in self.observers and callback in self.observers[event]:
self.observers[event].remove(callback)
if not self.observers[event]:
del self.observers[event]
def notify(self, event: NotificationType) -> None:
"""
Notifie tous les abonnés de l'événement donné, en leur passant la donnée.
"""
if event in self.observers:
for callback in self.observers[event]:
callback()