Python设计模式

Python观察者模式

Python观察者模式详细操作教程
在这种模式下,对象被表示为等待事件触发的观察者。一旦发生指定的事件,观察者将附加到主题上。事件发生时,受试者会告诉观察者事件已经发生。
以下UML图表示观察者模式-
观察者模式

如何实现观察者模式?

现在让我们看看如何实现观察者模式。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
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()

输出

上面的程序生成以下输出-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
downloading
worker running: 1 (1)
worker running: 1 (1)
worker running: 1 (1)
unfunf
unfunf
unfunf
unfunf
done
worker running: 2 (4)
done
worker running: 2 (4)
done
worker running: 2 (4)
donedone
worker running: 3 (4)
done
worker running: 3 (4)
worker running: 3 (4)
done
worker running: 4 (4)done
worker running: 4 (4)
done
worker running: 4 (4)
done
done
done

说明

上面的代码说明了下载特定结果的过程。根据观察者模式逻辑,每个对象都被视为观察者。当事件被触发时,它将打印输出。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4