observer design pattern
Roland Schlenker
rol9999 at attglobal.net
Mon Jan 22 16:09:48 EST 2001
fray_fernando at my-deja.com wrote:
>
> Where can I find some python sample code implementing the observer
> pattern? O:-)
> TIA
>
> Sent via Deja.com
> http://www.deja.com/
This is the example in the Design Patterns book for the observer
pattern written in Python.
# Demonstrate an observer pattern.
import time
class Observer:
def __init__(self):
pass
def update(self, theChangedSubject):
pass
class Subject:
def __init__(self):
self.observerList = []
def attach(self, observer):
self.observerList.append(observer)
def detach(self, observer):
self.observerList.remove(observer)
def notify(self):
for observer in self.observerList:
observer.update(self)
class ClockTimer(Subject):
def __init__(self):
Subject.__init__(self)
self.localTime = time.localtime(time.time())
def getHour(self):
return self.localTime[3]
def getMinute(self):
return self.localTime[4]
def getSecond(self):
return self.localTime[5]
def tick(self):
while 1:
time.sleep(1)
self.localTime = time.localtime(time.time())
self.notify()
class DigitalClock(Observer):
def __init__(self, clocktimer):
self.clocktimer = clocktimer
self.clocktimer.attach(self)
def update(self, theChangedSubject):
if theChangedSubject is self.clocktimer:
self.draw()
def draw(self):
print 'The time is %02i:%02i:%02i' % (self.clocktimer.getHour(),
self.clocktimer.getMinute(),
self.clocktimer.getSecond())
if __name__ == "__main__":
timer = ClockTimer()
digitalClock = DigitalClock(timer)
timer.tick()
Roland Schlenker
More information about the Python-list
mailing list