如何用Python语言实现观察者模式
发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,这篇文章主要介绍"如何用Python语言实现观察者模式",在日常操作中,相信很多人在如何用Python语言实现观察者模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如
千家信息网最后更新 2025年02月24日如何用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安全错误
数据库的锁怎样保障安全
网络安全工作会议暨联席会议
网络安全领域领军企业
网络安全报送的信息分为
网络安全员真题
.mdb怎么导入数据库
深圳csg网络安全论坛
网络安全宣传活动主持词
湖南通用服务器
dell服务器操作系统
佛山工业软件开发兼职
2000的数据库附加
软件开发不用框架
数据库文件名有哪些
杭州工商软件开发中心
mongodb数据库管理工具
数据库表连续编号
疫情网课网络安全
网络安全密钥换成
二手服务器电脑回收
联影医疗软件开发怎么样
广州提莫互联网科技有限公司
嵌入式管理服务器面试题
计算机软件开发属于哪个类别
护苗网络安全教育平台
成都互联网软件开发需要多少钱
海南crm软件开发公司
单片机数据库传输
网络安全监督英语作文
不选软件开发
网络安全工程师简历证件照