Skip to content

Instantly share code, notes, and snippets.

@svalleru
Last active April 6, 2016 06:12
Show Gist options
  • Save svalleru/a0334288c1bbf5e74d0c to your computer and use it in GitHub Desktop.
Save svalleru/a0334288c1bbf5e74d0c to your computer and use it in GitHub Desktop.
Observer Design Pattern in Python
__author__ = 'svalleru'
class Observable(object):
def __init__(self, name):
self._name = name
self._observers = []
def register_observer(self, observer):
self._observers.append(observer)
def notify_observers(self, msg):
for observer in self._observers:
observer.notify(self._name, msg)
class Observer(object):
def __init__(self, observable, name):
self._name = name
observable.register_observer(self)
def notify(self, observable, msg):
print "{0}: {1} said {2}".format(self._name, observable, msg)
Trump = Observable('Donald Trump')
SomeRobert = Observer(Trump, 'SomeRobert')
SomeJack = Observer(Trump, 'SomeJack')
Trump.notify_observers('Hillary Clinton had been "schlonged" by Barack Obama in the 2008 Democratic primaries')
# SomeRobert: Donald Trump said Hillary Clinton had been "schlonged" by Barack Obama in the 2008 Democratic primaries
# SomeJack: Donald Trump said Hillary Clinton had been "schlonged" by Barack Obama in the 2008 Democratic primaries
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment