Created
November 21, 2019 15:19
-
-
Save heolin/3fd75ebd777b3760cd97ad6557ef91ad to your computer and use it in GitHub Desktop.
Simple event manager in python
This file contains hidden or 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
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