Skip to content

Instantly share code, notes, and snippets.

@heolin
Created November 21, 2019 15:19
Show Gist options
  • Save heolin/3fd75ebd777b3760cd97ad6557ef91ad to your computer and use it in GitHub Desktop.
Save heolin/3fd75ebd777b3760cd97ad6557ef91ad to your computer and use it in GitHub Desktop.
Simple event manager in python
class Mom:
def on_door_opened(self):
print("Who's there?")
class Priest:
def on_door_opened(self):
print("Is it police? Run!")
class EventManager:
def __init__(self):
self._handlers = {}
def add_handler(self, event_name, handler):
if event_name not in self._handlers:
self._handlers[event_name] = []
# event_name is not yet used, so prepare an empty bag
self._handlers[event_name].append(handler)
def emit(self, event_name):
for handler in self._handlers[event_name]:
handler()
manager = EventManager()
mom = Mom()
priest = Priest()
manager.add_handler("DOOR_OPENED", mom.on_door_opened)
manager.add_handler("DOOR_OPENED", priest.on_door_opened)
manager.emit("DOOR_OPENED")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment