Python-design-patterns-observer

提供:Dev Guides
移動先:案内検索

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

出力

上記のプログラムは、次の出力を生成します-

オブザーバーパターン出力

説明

上記のコードは、特定の結果をダウンロードする手順を説明しています。 オブザーバーパターンロジックに従って、すべてのオブジェクトはオブザーバーとして扱われます。 イベントがトリガーされると出力を印刷します。