在此模式中,对象表示为等待事件触发的观察者.一旦指定事件发生,观察者就会附加到主题上.当事件发生时,主体告诉观察者它已经发生.
以下UML图表示观察者模式 :
如何实现观察者模式?
现在让我们看看如何实现观察者模式.
import threadingimport timeimport pdbclass Downloader(threading.Thread): def run(self): print 'downloading' for i in range(1,5): self.i = i time.sleep(2)print 'unfunf' return 'hello world'class Worker(threading.Thread): def run(self): for i in range(1,5): print 'worker running: %i (%i)' % (i, t.i) time.sleep(1) t.join() print 'done't = Downloader()t.start()time.sleep(1)t1 = Worker()t1.start()t2 = Worker()t2.start()t3 = Worker()t3.start()
输出
上述程序生成以下输出 :
解释
上面的代码解释了下载特定结果的过程.根据观察者模式逻辑,每个对象都被视为观察者.它会在触发事件时打印输出.