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()
出力
上記のプログラムは、次の出力を生成します-
説明
上記のコードは、特定の結果をダウンロードする手順を説明しています。 オブザーバーパターンロジックに従って、すべてのオブジェクトはオブザーバーとして扱われます。 イベントがトリガーされると出力を印刷します。