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

哪家公司做网站商业网站建设案例课程 下载

哪家公司做网站,商业网站建设案例课程 下载,wordpress5.0正式发布,关键词难易度分析观察者模式 单个对此(发布者,也称为主体或是可观察对象)和一个或是多个对象(订阅者,也称为观察者)之间的发布-订阅关系。增加发布者和订阅这个之间解耦,使得在运行时添加、删除订阅者变得容易。…

观察者模式

单个对此(发布者,也称为主体或是可观察对象)和一个或是多个对象(订阅者,也称为观察者)之间的发布-订阅关系。增加发布者和订阅这个之间解耦,使得在运行时添加、删除订阅者变得容易。对于MVC, 发布者是模型,订阅者是视图。

拍卖场景:

每个竞买人,都有一个号码牌,当天安门想要出价时,就举起号码牌。当竞买人举起牌子时,拍卖人即为主体,更新竞买价格,并将新价格广播给所有竞买人(竞买者)。

软件场景: 

RabbitMQ  库可以用于应用程序添加异步消息支持,支持多种消息协议,http和amqp 。RbbitMQ 可以在Python 应用与发布订阅模式,该模式就是观察者设计模式。

新闻流: 

使用RSS 、Atom 或其他相关格式。可以关注一个新闻流,每次更新时候,你都会收到一个关于更新的通知。

事件驱动系统

监听器监听特定的事件,监听器在监听的事件被创建时触发。这个事件可以是按下一个特定的键,移动鼠标,事件扮演发布者的角色,监听器扮演观察者的角色。可以为单个事件(发布者)添加多个监听器(观察者)。

案例

格式化程序,有一个默认的格式化程序,以十进制格式显示一个值,可以添加、注册更多的格式化程序。每次更新默认的格式化程序时候,都会通知已经注册的格式化程序采取行动。程序以相关格式显示新的值。

(1) 定义 Publisher 类。

(2) 定义 DefaultFormatter 类,以及特殊的 __init__ 和 __str__ 方法。

(3) 向 DefaultFormatter 类添加 data 属性的设置方法和获取方法。

(4) 定义两个观察者类

(5) 添加程序的主体部分。 main() 函数的第一部分如下。

class Publisher:def __init__(self):self.observers = []  # 保存观察者def add(self, observer):if observer not in self.observers:self.observers.append(observer)else:print(f'Failed to add:{observer}')def remove(self, observer):try:self.observers.remove(observer)except ValueError:print(f"Failed to remove:{observer}")def notify(self):print("所有观察者通知更新")[o.notify(self) for o in self.observers]class DefaultFormatter(Publisher):def __init__(self, name):Publisher.__init__(self)self.name = nameself._data = 0def __str__(self):return f"{type(self).__name__}:'{self.name}' has data ={self._data}"@propertydef data(self):return self._data@data.setterdef data(self, new_value):try:self._data = int(new_value)except ValueError as e:print(f"Error:{e}")else:self.notify()  # 执行通知
"""
定义两个观察者
"""class HexFormatterObs:def notify(self, publisher):value = hex(publisher.data)print(f"{type(self).__name__}: '{publisher.data}' has now hex data ={value}")class BinaryFormatterObs:def notify(self, publisher):value = bin(publisher.data)print(f"{type(self).__name__}:'{publisher.data}' has  now bin data ={value}")def main():df=DefaultFormatter('test1')print(df)print("---------------------")hf=HexFormatterObs()df.add(hf)df.data=3print(df)bf=BinaryFormatterObs()df.add(bf)df.data=21print(df)print("----------hello-----------")df.data='hello'print(df)print("----------15.8-----------")df.data=15.8print(df)
if __name__ == '__main__':main()# try:#     print("33333")# except:#     print("wwww")# else:#     print("else")

执行结果 

DefaultFormatter:'test1' has data =0
---------------------
所有观察者通知更新
HexFormatterObs: '3' has now hex data =0x3
DefaultFormatter:'test1' has data =3
所有观察者通知更新
HexFormatterObs: '21' has now hex data =0x15
BinaryFormatterObs:'21' has  now bin data =0b10101
DefaultFormatter:'test1' has data =21
----------hello-----------
Error:invalid literal for int() with base 10: 'hello'
DefaultFormatter:'test1' has data =21
----------15.8-----------
所有观察者通知更新
HexFormatterObs: '15' has now hex data =0xf
BinaryFormatterObs:'15' has  now bin data =0b1111
DefaultFormatter:'test1' has data =15

http://www.yayakq.cn/news/290640/

相关文章:

  • 站长网站提交asp.net 企业官网网站 源码 多风格 多模板 多皮肤
  • 什么网站框架网站做项目
  • 网站怎么做后台网站首页模板下载
  • 企业做网站需要什么手续吗卢沟桥网站建设
  • 滁州市南谯区规划建设局网站免费做二建题的网站
  • pc网站如何做移动适配升腾d9116 做网站
  • 凤岗镇网站建设国外有哪些网站可以做电商
  • 网络舆情分析的免费网站四川网络推广
  • 在线文档网站源码wordpress 3.8.3
  • 做网站用平板吗佛山建站模板制作
  • 空投糖果网站开发wordpress主题导航调用
  • 网站建设 流程图企业网站建设课件
  • 在荔浦找事情做投简历那个网站南宁网站建设怎么样
  • 国内酷炫网站wordpress logo更换
  • 看动漫是怎么做视频网站网站设计模板怎么使用
  • 中国铁路建设监理协会官方网站太原网站建设推广
  • 济源网站建设价格瑞金网站建设推广
  • 深圳海外医疗网站建设移动互联网开发平台有哪些
  • 北京网站设计浩森宇特百度总部电话
  • 优惠券的网站制作wordpress topic页面
  • 用vuejs做的网站wordpress占用内存过大
  • 网站设计目标 优帮云电池外贸一般在哪些网站做
  • 手机版官方网站的建设怎样建置换平台网站
  • 四川网站建设哪家专业接私活 做网站
  • 做旅游的网站的需求湖州企业网站制作
  • 怎么把文件发送到网站手机端原神
  • 兰州优化网站wordpress附件链接
  • 越南网站 后缀怎么在南京人社网站做失业登记
  • 苏州建网站需要什么网站搭建费用
  • 温州网站推广哪家好管理会计