Skip to content

Instantly share code, notes, and snippets.

@jamilnoyda
Created April 18, 2022 09:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamilnoyda/c803fa0f9c40677a4825c6710a9fdb55 to your computer and use it in GitHub Desktop.
Save jamilnoyda/c803fa0f9c40677a4825c6710a9fdb55 to your computer and use it in GitHub Desktop.
from turtle import mainloop
from unittest import main
class Observable:
def __init__(self):
self._observers = []
def register_observer(self, observer):
self._observers.append(observer)
def notify_observers(self, *args, **kwargs):
for obs in self._observers:
(name, b, x) = args
if obs.name == name:
obs.fire_event(self, *args, **kwargs)
class Observer:
def __init__(self, observable):
observable.register_observer(self)
def fire_event(self, observable, *args, **kwargs):
pass
class PurgeObserver(Observer):
def __init__(self, observable):
self.name = "PurgeObserver"
super(PurgeObserver, self).__init__(observable)
def fire_event(self, observable, *args, **kwargs):
print("purge fire")
class NotifyObserver(Observer):
def __init__(self, observable):
self.name = "NotifyObserver"
super(NotifyObserver, self).__init__(observable)
def fire_event(self, observable, *args, **kwargs):
print("send a email")
class EventManagement:
def __init__(self):
self.observable = Observable()
self.purge_observer = PurgeObserver(self.observable)
self.notify_observer = NotifyObserver(self.observable)
event_management = EventManagement()
event_management.observable.notify_observers("PurgeObserver", "b", "x")
event_management.observable.notify_observers("PurgeObserver", "b", "x")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment