Skip to content

Instantly share code, notes, and snippets.

@hearimm
Last active October 13, 2017 08:54
Show Gist options
  • Save hearimm/bc48ba3a75a6b5f1feef237d6db17621 to your computer and use it in GitHub Desktop.
Save hearimm/bc48ba3a75a6b5f1feef237d6db17621 to your computer and use it in GitHub Desktop.
Observer Pattern in Python
class Observable:
def __init__(self):
self.__observers = []
def register_observer(self, observer):
self.__observers.append(observer)
def notify_observers(self, *args, **kwargs):
for observer in self.__observers:
observer.notify(self, *args, **kwargs)
class Observer:
def __init__(self, observable):
observable.register_observer(self)
def notify(self, observable, *args, **kwargs):
raise NotImplementedError
class Hex_Observer(Observer):
def notify(self, observable, *args, **kwargs):
print( "Hex value = %s" % hex(args[0]) )
class Binary_Observer(Observer):
def notify(self, observable, *args, **kwargs):
print( "Binary value = %s" % bin(args[0]) )
class Decimal_Observer(Observer):
def notify(self, observable, *args, **kwargs):
print( "Binary value = %s" % bin(args[0]) )
subject = Observable()
observer1 = Hex_Observer(subject)
observer2 = Binary_Observer(subject)
observer3 = Decimal_Observer(subject)
subject.notify_observers(100)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment