Created
December 15, 2019 14:26
-
-
Save StanGenchev/0f93d3c835e6e21e7f20c4eda132c67b to your computer and use it in GitHub Desktop.
My 'Event Dispatcher' implementation in python.
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
class EventDispatcher: | |
def __init__(self): | |
self.__eventhandlers = {} | |
def add_event(self, event, handler): | |
self.__eventhandlers[event] = handler | |
def remove_event(self, event): | |
del self.__eventhandlers[event] | |
def call_event(self, event, *args, **kwargs): | |
self.__eventhandlers[event](*args, **kwargs) | |
class MainClass: | |
def __init__(self): | |
self.secondary = SecondaryClass() | |
self.event_dispatcher = self.secondary.get_event_dispatcher() | |
self.event_dispatcher.add_event("show_text", self.show_text) | |
def show_text(self, text): | |
print(text) | |
def trigger(self): | |
self.secondary.simulate_event() | |
class SecondaryClass: | |
def __init__(self): | |
self.on_event = EventDispatcher() | |
def get_event_dispatcher(self): | |
return self.on_event | |
def simulate_event(self): | |
self.on_event.call_event("show_text", "some text") | |
main = MainClass() | |
main.trigger() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment