파이썬 디자인 패턴-관찰자

이 패턴에서 객체는 이벤트가 트리거되기를 기다리는 관찰자로 표시됩니다. 관찰자는 지정된 이벤트가 발생하면 주제에 연결합니다. 사건이 발생하면 피험자는 관찰자에게 사건이 발생했음을 알립니다.

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

산출

위의 프로그램은 다음과 같은 출력을 생성합니다-

설명

위의 코드는 특정 결과를 다운로드하는 절차를 설명합니다. 관찰자 패턴 논리에 따라 모든 개체는 관찰자로 취급됩니다. 이벤트가 발생하면 출력을 출력합니다.