当前位置: 首页 > news >正文

python 设计模式 观察者_观察者设计模式

在观察者设计模式这种模式中,对象被表示为等待事件触发的观察者。 一旦发生指定的事件,观察者就会关注该主体。 当事件发生时,主体告诉观察者它已经发生。

以下UML图表示观察者模式 -

240b8ea25000dba5db551703f8f32eb7.png

如何实现观察者模式?

现在让我们来看看如何实现观察者模式。参考以下实现代码 -

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

执行上述程序生成以下输出 -

f9678400a2855b8e457e8bca4b7e9b0f.png

解释说明

上面的代码解释了下载特定结果的过程。 根据观察者模式逻辑,每个对象都被视为观察者。 它在事件触发时打印输出。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

相关文章:

  • 叶金荣mysql的简历_知数堂 叶金荣——MySQL 5-7优化不求人
  • yum pam_mysql centos_CentOS系统服务器环境配置
  • 以下python扩展库不是用于科学计算的有_《Python程序设计》试题库
  • 只用mysql怎么支撑高并发_README.md · 须臾/真正能支撑高并发以及高可用的复杂系统中的缓存架构有哪些东西 - Gitee.com...
  • 分布式mysql同步oracle_一种分布式数据库同步方案 .
  • c# 调用mysql存储过程 返回值_C#调用数据库存储过程
  • python给js变量赋值_JavaScript OR(||)变量赋值说明
  • xlc编译mysql_aix|安装Xlc编译器12版本
  • java print 包_java打jar包的几种方式详解
  • java extjs 项目_Java Web项目(Extjs)报错八
  • java技术路线_Java技术路线
  • java 内存模型书籍_那些年读过的书《Java并发编程实战》十、再探究Java内存模型...
  • linux mysql 表名大小写_Linux系统下MySql表名大小写敏感问题
  • java 分支结构_Java分支结构
  • java里的文件显示繁体_关于在JSP页面上同时显示简体和繁体的问题(字符编码)...
  • [译]如何构建服务器端web组件,为何要构建?
  • egg(89)--egg之redis的发布和订阅
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • PHP 7 修改了什么呢 -- 2
  • vuex 笔记整理
  • 三栏布局总结
  • 算法-插入排序
  • 小程序开发之路(一)
  • 小程序开发中的那些坑
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • Linux权限管理(week1_day5)--技术流ken
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​渐进式Web应用PWA的未来
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)模仿学习-Action数据的模仿
  • (一)为什么要选择C++
  • (转)JAVA中的堆栈
  • (转)scrum常见工具列表
  • (转)拼包函数及网络封包的异常处理(含代码)
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • *p++,*(p++),*++p,(*p)++区别?
  • .FileZilla的使用和主动模式被动模式介绍
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET基础篇——反射的奥妙
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [100天算法】-x 的平方根(day 61)
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [APIO2012] 派遣 dispatching
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符