Python 设计模式 - 观察者模式

  • 简述

    在这种模式中,对象被表示为等待事件触发的观察者。一旦指定的事件发生,观察者就会依附于主题。当事件发生时,主体告诉观察者它已经发生了。
    以下 UML 图表示观察者模式 -
    观察者模式
  • 如何实现观察者模式?

    现在让我们看看如何实现观察者模式。
    
    import threading
    import time
    import pdb
    class 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()
    

    输出

    上述程序生成以下输出 -
    观察者模式输出

    解释

    上面的代码解释了下载特定结果的过程。根据观察者模式逻辑,每个对象都被视为观察者。它在触发事件时打印输出。