10分钟学Python设计模式|观察者模式

《Python3案例和总结》-专栏介绍和目录 本专栏专注于Python基础和进阶的系统讲解,逐步深入实际应用场景到python高级特性,让你轻松学会用Python解决各种实际问题。不管是零基础还是有经验的开发,相信都能从本专栏获益。 阅读详情

这是一篇以前的设计模式的文章,零零散散,最近的项目在重构一些代码,觉得设计模式还是很重要的,有兴趣的可以看看!设计模式的看起来招式很简单,但是设计非常精妙,需要反反复复的咀嚼才能掌握它的精髓!


程序员小马刚毕业来到上海闯荡,开始了魔都的生活,每个月只有可怜的一点工资,因为刚毕业,好不容易找到一份工作,月薪4500块。为省房租,所以住的比较远,每天要坐两个小时的地铁上下班!


小马是一个吃货,喜欢吃喜欢旅游的,下班后躺在床上,想着如果这次项目完成了:

  • 如果能发5000块工资就可以约隔壁部门的大美女吃一顿大餐,

  • 如果发了6000块就可以去买双球鞋,原来那双都破个洞了

  • 如果发了7000块就可以去趟杭州玩几天,西湖美景美如画


640


想着想着,心里美滋滋的,干脆自己写一个程序提醒我多好啊!光说不练假把式,小马开始动手写Python代码...


01.

用简单的观察者模式


小马虽然是刚毕业的菜鸟码农,但是上学的时候还是很努力的,记得老师曾经教给他一些编写代码的思想,想想代码不能写的太烂啊,要方便扩展,这次干脆用老师教给我们的设计模式来做过!


观察者模式大部分都是一对多的关系,可以多个观察者对象同时监听某一个对象!这里我们有两个模式,吃货模式和旅游模式,而我们的工资就是监听对象,一旦工资发出来,我们根据工资的数目来判断,我们是去吃大餐,还是去旅游,听起来很简单吧,我上代码:


1).监听对象

640


工资就是我们设计的监听的类,里面几个函数,对工资进行设定的get和set方法

还有两个很重要的方法,一个是增加观察者,一个是通知(一旦满足某一些条件,就可以通过这个接口立刻通知)


2).两个观察者

首先抽象出一个观察者的父类,里面有一个update通知函数

640


接着写吃货模式,我们重写update函数,把吃大餐和买新鞋的逻辑放在里面

640


最后写旅游模式,也是要重写update函数,把旅游的逻辑放在里面,大于7000块就可以出去浪啦~~

640



02.

写个测试代码试一下


上面写了这么多,我们用代码来跑一下看看结果如何

640

初始化3个对象,工资对象salary,吃货对象eatObser和旅游对象travleObser


工资对象是被监听的,我们会增加两个观察者eatObser和travleObser

最后看一下8月份的工资,我们随机一组工资看一下:


Currently salary is: 5500

>>可以去约隔壁组的莉莉mm,吃顿大餐了,哈哈!

Currently salary is: 6000

>>原来的那双球鞋都破了,总有可以去买双新的了

Currently salary is: 6500

>>原来的那双球鞋都破了,总有可以去买双新的了



Python设计模式之观察者模式简单示例 主要介绍了Python设计模式之观察者模式,简单描述了观察者模式的概念、原理,并结合实例形式分析了Python观察者模式的相关定义与使用技巧,需要的朋友可以参考下 立即下载

相关推荐

EVE-NG 新增 qcow2 镜像教程

本文介绍了如何在 EVE-NG 网络仿真平台中添加 QCOW2 镜像并配置 YML 文件。首先,用户需要了解 EVE-NG 的目录结构,上传并重命名 QCOW2 镜像,然后设置文件权限并刷新界面以识别设备。接着,讲解了 YML 文件的作用,它用于定义设备的CPU、内存、网卡等参数,并给出了配置示例。若有多个设备版本,可以通过复制并重命名 YML 文件使其独立显示。最后,通过检查 QEMU 进程和日志验证 YML 配置是否生效。总结部分强调了 EVE-NG 的自动识别机制以及独立管理设备版本的方式。

qq_41862216的博客 3075

python面试题——设计模式之观察者模式

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式又称:"发布-订阅"模式。比如,微信公众号,就是一种观察者模式的应用:一个公众号对应了多个(N)个 订阅者,公众号发布了新的文章,所有的订阅者都会被通知并更新。也就相当于,我们所有的订阅者就是观察者,我们观察这个公众号(发布者),他一更新,我们就能知道.

python全栈 1789

CentOS 7下rsyslog日志服务器搭建全攻略:从安装到避坑

本文详细介绍了在CentOS 7系统上搭建rsyslog日志服务器的完整流程,从基础安装到高级配置,包括协议设置、日志模板设计、安全加固和性能优化。特别分享了生产环境中的实战技巧和常见问题解决方案,帮助用户高效构建可靠的日志管理系统。

happy2的博客 687

观察者模式(python)

观察者模式

qq_51179608的博客 2308

C2000 CLA协处理器:嵌入式实时控制性能优化与实战指南

在嵌入式实时控制系统中,主CPU常因高频率、低延迟的控制算法而面临性能瓶颈。为解决此问题,协处理器技术应运而生,它通过硬件并行架构分担计算密集型任务,从而提升系统整体性能。其核心原理在于独立的计算单元与总线设计,能够实现近乎零延迟的响应,这对于电机驱动、数字电源等闭环控制场景具有极高的技术价值。本文聚焦于德州仪器C2000系列微控制器中的控制律加速器(CLA),深入解析其作为独立浮点协处理器如何通过任务调度与消息RAM通信机制,有效实现性能倍增,并提供了从内存配置到代码调试的完整工程实践方案。

weixin_29192211的博客 305

忍者安全渗透系统(NINJITSU OS V3)的安装详细过程,亲测新旧vm版本都可安装,附带下载来源

忍者安全渗透系统(NINJITSU)的安装详细过程,亲测新旧vm版本都可安装,附带下载来源

1万+

python小白设计模式之观察者模式

要学好编程,或者说是软件开发,学好设计模式也是重要的一关(亲身体会!!!对于框架少的一些小众语言得自己去搭框架,不论开发还是维护,还是很费劲得),即便是有很多现成的框架可以使用,学好设计模式对框架优化或性能提升还是有帮助得。下面开始学习python下得观察者模式。虽然很懒,还是写点吧!本次学习的重点就是观察者模式的思想核心对像:被观察者接口、具体被观察者、观察者接口、具体观察者观察者:数据发布方法 update()被观察者:数据订阅方法 attach()取消订阅方法 detach()

weixin_42321076的博客 1078

智慧城市中的CV:交通流量监控与行人检测

智慧城市中的CV:交通流量监控与行人检测 ,人工智能,计算机视觉,大模型,AI,计算机视觉作为人工智能的重要分支,通过分析和理解图像或视频数据,为智慧城市提供了强大的感知能力。在交通管理领域,计算机视觉技术可实现交通流量监控、行人检测、违章行为识别等功能,助力构建高效、安全、绿色的城市交通系统。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 5万+

python简单学 观察者模式【Observer Pattern】

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,使得当一个对象的状态发生变化时,其所有依赖对象都会收到通知并自动更新。在观察者模式中,被观察者称为主题(Subject),而观察者称为观察者(Observer)。

m0_38096164的博客 746

点云中概念:匹配、配准、融合

匹配,是寻找与一幅图相似的图像(不对寻找到的图像做矫正)。 配准,是寻找相似图像但是变形后的图像(需要做一些旋转之类的校正变换)。 融合,是多幅图像连接成一幅大图,视频集成中用的比较多。 1)匹配: 2)配准: 比如由于固定式激光雷达受测量方式的限制和被测物体集合形状的限制,固定的话一次只能扫描被测物体有限范围的点云数据(比如一个面??),这需要在多个视角下进行多次扫描(就是将激光雷达前后左右四个面都扫一下??对的),然而每个视角下得到点云数据都具有独立的坐标系,无法直接进行拼接(拼接就是将四个面

m0_37957160的博客 1万+

PDN分析实战:电源完整性设计与Altium PDN Analyzer全流程指南

电源完整性(PI)是嵌入式硬件系统稳定运行的基础能力,其核心在于控制电流密度与电压降两大物理量。基于欧姆定律与热-电耦合原理,PDN分析将抽象的电源噪声问题转化为可量化、可定位的几何与电气参数优化过程。该技术显著提升系统抗干扰能力、降低复位与ADC漂移等隐性故障率,并直接支撑EMC合规性设计。典型应用场景包括电机驱动板、Wi-Fi模块、STM32/ESP32等资源受限型MCU供电网络验证。本文以Altium Designer为工具平台,结合IPC-2152标准与真实工程案例,详解从功率预算、模型构建到瓶颈定

weixin_28949937的博客 229

python设计模式(三):观察者模式

引言 观察者模式介绍 观察者与发布订阅

submarineas的博客 3291

汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

A2L文件的生成分为两章讲解:本文主要是讲模型开发,讲解如何把标定量、观测量放到链接文件中的指定位置。下一篇讲解如何使用matlab生成完整的A2L文件

认真搞搞汽车MCU 4618

python观察者模式 多线程_10分钟学Python设计模式|观察者模式

原标题:10分钟学Python设计模式|观察者模式这是一篇以前的设计模式的文章,零零散散,最近的项目在重构一些代码,觉得设计模式还是很重要的,有兴趣的可以看看!设计模式的看起来招式很简单,但是设计非常精妙,需要反反复复的咀嚼才能掌握它的精髓!程序员小马刚毕业来到上海闯荡,开始了魔都的生活,每个月只有可怜的一点工资,因为刚毕业,好不容易找到一份工作,月薪4500块。为省房租,所以住的比较远,每天要坐...

weixin_39654823的博客 159

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

026-观察者模式

观察者模式摘要 观察者模式定义了一对多的对象依赖关系,当主题对象状态变化时,自动通知所有观察者。核心特征包括: 一对多关系 松耦合设计 动态添加/删除观察者 支持推/拉两种通知方式 UML结构包含抽象主题、具体主题、抽象观察者和具体观察者四个核心组件。适用于订阅发布、事件通知等场景,如: 报纸订阅系统 股票价格监控 社交媒体更新通知 Java实现示例展示了主题维护观察者列表,状态变化时遍历通知所有注册观察者的完整过程。

wyl703的博客 937

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

018-观察者模式

观察者模式是一种对象间一对多的依赖关系设计模式,当主题对象状态变化时自动通知所有观察者。核心组件包括抽象主题(Subject)、具体主题(ConcreteSubject)、抽象观察者(Observer)和具体观察者(ConcreteObserver),通过松耦合方式实现主题与观察者的交互。典型应用场景包括股票监控、新闻订阅等系统。Java实现展示了基础架构和股票价格监控示例,通过attach/detach管理观察者,状态变更时自动触发notifyObservers()更新所有注册观察者。

wyl703的博客 489

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Python数据结构与设计模式学习实践

数据结构是计算机科学的基础概念,它研究数据的组织、存储和管理方式。在编程实践中,合理选择数据结构能显著提升算法效率,比如链表适合频繁插入删除,二叉树便于快速查找。观察者模式作为常见的设计模式,实现了对象间的松耦合通信,广泛应用于事件处理系统。通过Python实现这些技术,开发者可以构建更健壮、可维护的应用程序。本文通过具体的学习实践,展示了如何结合数据结构和设计模式解决实际问题,如使用迭代法优化递归算法,以及观察者模式在温度监控系统中的应用。

weixin_32288959的博客 190

设计模式--观察者模式

最近看设计模式,其中谈及到观察者模式. 可以理解为被观察者对外提供注册机制,观察者可以通过插入和移除实现订阅和取消订阅消息的功能,无论观察者有没有注册, 都不会影响被观察者发布消息. 而这在mmdetection中体现的很好. 举个例子来观察每天我的生活: 其中register_hook用来注册HOOK来判断是否要观察我的每天生活. import sys class HOOK: def before_getup(self, runner): print('{}:赖床30

智障变智能 173

Python高级应用系列(九):设计模式在Python中的实现——从原理到代码

本文介绍了Python中10种常用的设计模式实现方法。主要内容包括:单例模式(模块级、装饰器、元类三种实现)、工厂模式(简单工厂和工厂方法)、观察者模式(事件通知机制)、策略模式(算法替换)、装饰器模式(动态扩展功能)、适配器模式(接口转换)、命令模式(操作封装)、迭代器模式(自定义遍历)、模板方法模式(算法骨架)以及Python特有的Mixin模式和上下文变量模式。文章通过代码示例展示了每种模式的典型应用场景,并比较了不同实现方式的优缺点。特别强调了Python动态特性在设计模式实现中的优势,如利用模块天

weitingfu的博客 266

23种设计模式教程目录

本教程系统性地介绍GoF(Gang of Four)提出的23种经典设计模式,从基础理论到实际应用,构建完整的设计模式知识体系。教程面向软件开发人员、架构师和计算机专业学生,通过理论讲解、代码实现、UML图解和实战案例,帮助读者深入理解和熟练运用设计模式。适用人群:学习收益:掌握设计模式基础理论,理解面向对象设计原则学习三大类设计模式,通过代码实践加深理解掌握复杂模式的应用场景和组合使用能够在实际项目中灵活运用设计模式解决复杂问题建议学习节奏:

wyl703的博客 993

Python设计模式实战:23种模式解析与性能优化

设计模式是软件开发中解决特定问题的经典方案模板,通过提供可复用的设计结构,能显著提升代码质量和可维护性。其核心原理在于将变化部分与稳定部分分离,常见实现方式包括面向对象的多态、组合等机制。在Python中,设计模式的应用能带来模块解耦、扩展性提升等技术价值,特别适用于电商系统、金融支付、微服务架构等场景。本文重点解析单例模式的线程安全实现、装饰器模式的API限流应用等实战案例,其中工厂方法模式实测扩展性提升300%,策略模式实现算法切换耗时小于1ms。通过模式组合还能构建规则引擎等复杂系统,例如工厂+策略组

weixin_30924087的博客 374

软考软件设计师题目总结:用 Python 与 AI 辅助编程梳理设计模式考点

软考软件设计师设计模式题总在场景里翻车?用 Python 写 20 行最小示例配合 AI 辅助编程逐题校验,把业务描述翻译成模式语言。通过 TaoToken 统一 API 通道批量生成并验证单例、策略、观察者等高频模式,官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 提供接入文档与 Coding Plan,85 天冲刺每天 20 分钟即可建立场景到模式的条件反射。

weixin_42596214的博客 138

快速体验GLM-4.7-Flash强大功能:代码重构、设计模式、性能调优

本文介绍了如何在星图GPU平台上自动化部署GLM-4.7-Flash镜像,快速体验其强大的代码处理能力。该AI助手能深度理解代码逻辑,提供专业的重构建议、设计模式应用及性能调优方案,典型应用场景包括自动化重构冗长、可读性差的Python或JavaScript函数,显著提升开发效率与代码质量。

weixin_42515392的博客 202

必读的编程书:用Python玩转数据科学编程

全文共1709字,预计学习时长5分钟图源:unsplash在数据科学的实际应用中,编程的重要性要远远高于数学。为什么这么说呢?原因在于,当你与一些软件开发人员共事于一家公司时,了解如何让...

读芯术的博客 404

良心推荐!一个Python高手必读的库,真香!

菜鸟进阶高手,需要内外的修炼,外练招式,内修心法。招式有很多比如基本的函数,类,文件,模块,到并发,数据库的使用,再到一些框架的使用无论是爬虫的西瓜皮框架,还是后端的Django,Fla...

cainiao_python的博客 339

Python 后端开发技术博客专栏 | 第24篇:Python 设计模式实战 -- 23 种经典模式的 Pythonic 实现

反模式是看起来是解决方案,但实际会导致更多问题的常见做法。Python 中常见反模式God Object(上帝对象):一个类承担了太多职责(几千行的Service类)解决:按单一职责原则拆分过度继承:5-6 层的继承链,新增功能不知道该加在哪层解决:组合优于继承,使用 MixinCargo Cult Programming(货物崇拜编程):不理解原理地照搬设计模式解决:先理解问题,再选择方案Golden Hammer(金锤子):什么问题都用同一个工具解决。

weixin_43674738的博客 66
上一篇: 爆火啊,荣登GitHub趋势榜|Python学习的掌中宝,到底是啥?
下一篇: 行,这本Python 书彻底火了!
菜鸟学Python
博客等级 码龄9年 8063粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值