Created
September 12, 2022 14:57
-
-
Save okanyenigun/b59c00f02e52f9646d3fd14214b8c637 to your computer and use it in GitHub Desktop.
observer design pattern
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from abc import ABC, abstractmethod | |
class IObservable(ABC): | |
@abstractmethod | |
def subscribe(self, observer): | |
"""subscription""" | |
@abstractmethod | |
def unsubscribe(self, observer): | |
"""unsubscription""" | |
@abstractmethod | |
def update(self, message): | |
"""update method""" | |
class Reuters(IObservable): | |
def __init__(self): | |
self._subscribers = set() | |
def subscribe(self, observer): | |
self._subscribers.add(observer) | |
return | |
def unsubscribe(self, observer): | |
self._subscribers.remove(observer) | |
return | |
def update(self, message): | |
for observer in self._subscribers: | |
observer.update(message) | |
class IObserver(ABC): | |
@abstractmethod | |
def update(self, message): | |
"""""" | |
class Cnn(IObserver): | |
def update(self, message): | |
print("Breaking News: ", message) | |
return | |
class Fox(IObserver): | |
def update(self, message): | |
print("The Ultimate Breaking News: ", message) | |
class Archiever(IObserver): | |
def __init__(self): | |
self.db = [] | |
def update(self, message): | |
self._add_archieve(message) | |
print(f"{message} is added to database.") | |
def _add_archieve(self,message): | |
self.db.append(message) | |
return |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment