Các mẫu thiết kế Python - Người quan sát

Trong mẫu này, các đối tượng được biểu diễn như những người quan sát chờ một sự kiện để kích hoạt. Một người quan sát gắn vào chủ thể một khi sự kiện được chỉ định xảy ra. Khi sự kiện xảy ra, chủ thể nói với những người quan sát rằng nó đã xảy ra.

Biểu đồ UML sau đại diện cho mẫu người quan sát:

Làm thế nào để thực hiện mô hình quan sát viên?

Bây giờ chúng ta hãy xem cách triển khai mô hình quan sát viên.

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

Đầu ra

Chương trình trên tạo ra kết quả sau:

Giải trình

Đoạn mã trên giải thích quy trình tải xuống một kết quả cụ thể. Theo logic mẫu người quan sát, mọi đối tượng được coi là người quan sát. Nó in đầu ra khi sự kiện được kích hoạt.