Observer pattern
From wikinotes
The observer pattern is used when several objects need to to be notified of changes to one object. (a log-watcher, weather-data, chatroom, ...).
Instead of each object polling the object in question, the subject notifies a list of observers whenever it changes.
class Subject(object):
def __init__(self):
self._observers = set()
def add_observer(self, observer):
self._observers.add(observer)
def remove_observer(self, observer):
self._observers.pop(observer)
def notify(self):
for observer in self._observers:
observer.update()
class Observer(object):
def __init__(self, subject):
self._subject = subject
self._subject.add_observer(self)
def update(self):
# re-read subject, and do something.