如何用Python语言实现观察者模式
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章主要介绍"如何用Python语言实现观察者模式",在日常操作中,相信很多人在如何用Python语言实现观察者模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如
千家信息网最后更新 2025年12月01日如何用Python语言实现观察者模式
这篇文章主要介绍"如何用Python语言实现观察者模式",在日常操作中,相信很多人在如何用Python语言实现观察者模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用Python语言实现观察者模式"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
示例代码
首先是定义的观察对象基类Observable基类。这个类简单地实现了观察者登录和取消登录以及通知方法。这些方法会在派生类中使用。
# 观察对象基类class Observable: def __init__(self): self.observers= [] def attach(self, observer): print(type(observer), 'has beenattached!') self.observers.append(observer) def detach(self, observer): print(type(observer), 'has beendetached!') self.observers.remove(observer) def notify(self): for oin self.observers: o.update()
接下来是具象观察对象类。这个类的职责是在自身状态发生变化时调用基类接口向登录的观察者发出更新通知。
# 观察对象具象类class ConcreteObservable(Observable):def __init__(self):Observable.__init__(self)self.state= Nonedef set_state(self, state):self.state= stateself.notify()def get_state(self):return self.state
实际的观察者类只需要实现观察对象基类在通知时希望的update接口即可,具体如下:
# 观察者具象类class ConcreteObserver(Observer): def __init__(self,observable): Observer.__init__(self) self.observable= observable def update(self): print(type(self), self.observable.get_state())
下面的演示代码在分别构建Observable和Observer的具象类对象后,将Observer对象注册到Observable对象上。当改变Observable对象的状态时,可以得到状态变化的输出。观察者被删除之后再次改变Observable的状态,则无法得到状态变化的输出。
# 主程序if __name__ == '__main__': observable = ConcreteObservable() # 构建观察者 observer= ConcreteObserver(observable) # 观察者注册 observable.attach(observer) # 改变观察对象状态,产生输出 observable.set_state('State Changed1!') # 观察者删除 observable.detach(observer) # 再次改变观察对象状态,不产生输出 observable.set_state('State Changed2!')演示程序的输出如所示:
has been attached! has been attached! State Changed1! State Changed1! has been detached! State Changed2!
到此,关于"如何用Python语言实现观察者模式"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
观察
观察者
对象
状态
输出
模式
语言
具象
学习
方法
变化
登录
接下来
代码
再次
接口
更多
帮助
演示
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
外国的网络安全吗
供电所网络安全培训心得
eosi.o 软件开发
菏泽网络安全公司
数据库技术三级考试难吗
网络安全评测报告总结
网络安全社工软件
绵阳真晨互联网科技有限公司
怎么举报网络安全审查
网络安全传输介质的安全性
美国金融网络安全
自学网络安全基本功
x玖少年团网络安全家园
软件开发日语式样书
广发软件开发资深待遇
网络安全团会记录
游戏如何清除服务器记录
网络安全主题免费ppt
四川管理系统软件开发外包
网络安全教育日网络攻击
网络安全知识竞赛 通知
如何在家里访问学校服务器文件
网吧里的电脑怎么连接服务器
服务器双电源设计要求
加拿大 网络安全 工作
数据库及应用重庆大学出版社
建业软件开发
朱雅莉软件开发
apex服务器换不了
国税系统软件开发商