Python 設計模式 - 觀察者



在此模式中,物件表示為觀察者,它們等待觸發事件。事件發生後,觀察者會附加到主題。當事件發生時,主題會告訴觀察者它已經發生。

以下 UML 圖表示觀察者模式 −

Observer Pattern

如何實現觀察者模式?

現在,讓我們看看如何實現觀察者模式。

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()

輸出

上述程式生成如下輸出 −

Observer Pattern Output

解釋

上述程式碼解釋了下載特定結果的過程。根據觀察者模式邏輯,每個物件都被視為觀察者。在事件被觸發時,它列印輸出。

廣告