[python]事件的订阅与发布
October 18, 2024
事件的订阅与发布
事件枚举
from enum import Enum class EventTypes(Enum): Event1="event1" Event2 = "event2" ...
事件发布
全局单例
class EventPublisher: def __init__(self): self._subscribers = [] def add_subscriber(self, subscriber): self._subscribers.append(subscriber) def remove_subscriber(self, subscriber): self._subscribers.remove(subscriber) def publish_event(self, event_type, event_data=None): for subscriber in self._subscribers: subscriber.handle_event(event_type, event_data) event_publisher = EventPublisher()
事件订阅
抽象父类
from abc import ABC, abstractmethod class EventSubscriber(ABC): @abstractmethod def handle_event(self, event_type, event_data=None): ...
具体子类
from event_subscriber import EventSubscriber from event_types import EventTypes class App(EventSubscriber): def __init__(self) -> None: event_publisher.add_subscriber(self) ... def handle_event(self, event_type, event_data=None): if event_type == EventTypes.Event1: ... if event_type == EventTypes.Event2: ...