如何用Python语言实现观察者模式
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍"如何用Python语言实现观察者模式",在日常操作中,相信很多人在如何用Python语言实现观察者模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如
千家信息网最后更新 2025年01月23日如何用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= None
def set_state(self, state):
self.state= state
self.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安全错误
数据库的锁怎样保障安全
软件开发者还能强制阻止吗
成都网络技术研究院
大学网络安全工程师需要学什么
小学寒假网络安全保障工作总结
数据库的典型查询
网络安全挑战漫画
史上最难的软件开发
福建擎科技代驾软件开发
湿热一瞬间服务器迁移
相城区好服务器高质量的选择
未转变者修改器服务器
丹参基因组数据库
宁德网络安全支撑单位
网络安全常识美篇
中国7g网络技术
安卓软件开发 架构
怎么打开网络安全限制
靠谱的erp分销软件开发设计
网络技术学习方法大学
软件开发传感器接口问题
网吧服务器需要公网ip吗
深圳中港星互联网科技有限公司
延庆区综合软件开发创新服务
企业网络安全ppt下载
成都苹果软件开发大概多少钱
数据库 事务 锁库
数据库第二版试卷
租用云服务器安全级别
gartner 服务器
2021国家网络安全宣传周南阳