JFO_lab_skrzyzowanie/obserwacja.py

32 lines
717 B
Python
Raw Normal View History

# https://refactoring.guru/pl/design-patterns/observer/python/example
from __future__ import annotations
from abc import ABC, abstractmethod
class Obserwowany(ABC):
obserwatorzy = []
def dolaczObserwatora(self, obserwator: Obserwator):
self.obserwatorzy.append(obserwator)
def odlaczObserwatora(self, obserwator: Obserwator):
self.obserwatorzy.remove(obserwator)
@abstractmethod
def powiadomObserwatorow(self):
"""
Notify all observers about an event.
"""
pass
class Obserwator(ABC):
@abstractmethod
def odbierzPowiadomienie(self, obserwowany: Obserwowany):
"""
Receive update from subject.
"""
pass