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

做网站运维马鞍山市网站建设公司

做网站运维,马鞍山市网站建设公司,建设网站方法,xp网站建设观察者模式(发布-订阅模式 Publish Subscribe Pattern):定义了一种一对多的关系#xff0c;让多个观察对象同时监听一个主题对象#xff0c;当主题对象状态发生变化时会通知所有观察者,是它们能够自动更新自己#xff0c;是一种行为设计模式。观察者模式的结构1,Publisher 会…观察者模式(发布-订阅模式 Publish Subscribe Pattern):定义了一种一对多的关系让多个观察对象同时监听一个主题对象当主题对象状态发生变化时会通知所有观察者,是它们能够自动更新自己是一种行为设计模式。观察者模式的结构1,Publisher 会向其他对象发送值得关注的事件notifySubscribers。事件会在发布者自身状态改变或执行特定行为后发生。发布者中包含一个允许新订阅者加入subscribe和当前订阅者离开列表unsubscribe的订阅构架。2,当新事件发生时发送者会遍历订阅列表并调用每个订阅者对象的通知方法。该方法是在订阅者接口中声明的。3,Subscriber 接口声明了通知接口。在绝大多数情况下该接口仅包含一个update方法。该方法可以拥有多个参数使发布者能在更新时传递事件的详细信息。4,Concrete Subscriber 具体订阅者,可以执行一些操作来回应发布者的通知。所有具体订阅者类都实现了同样的接口发布者不与具体类相耦合。5,订阅者通常需要一些上下文信息来正确地处理更新。因此发布者通常会将一些上下文数据作为通知方法的参数进行传递。发布者也可将自身作为参数进行传递使订阅者直接获取所需的数据。6,Client 会分别创建发布者和订阅者对象然后为订阅者注册发布者更新。观察者代码1 from __future__ importannotations2 from abc importABC, abstractmethod3 from random importrandrange4 from typing importList567 classSubject(ABC):8 9 声明一组用于管理订阅者的方法10 1112 abstractmethod13 def attach(self, observer: Observer) -None:14 15 添加观察者到subject.16 17 pass1819 abstractmethod20 def detach(self, observer: Observer) -None:21 22 从subject删除观察者.23 24 pass2526 abstractmethod27 def notify(self) -None:28 29 通知观察者事件的发生.30 31 pass323334 classConcreteSubject(Subject):35 36 Subject有一些状态状态变更需要通知观察者37 38 #Subject的状态所有的订阅者都要有39 _state: int None4041 #订阅用户列表42 _observers: List[Observer] []4344 def attach(self, observer: Observer) -None:45 print(Subject: Attached an observer.)46 self._observers.append(observer)4748 def detach(self, observer: Observer) -None:49 self._observers.remove(observer)5051 #通知所有订阅者52 def notify(self) -None:53 54 通知接口触发了所有的订阅用户的update方法55 5657 print(Subject: Notifying observers...)58 for observer inself._observers:59 observer.update(self)6061 def some_business_logic(self) -None:62 63 一些业务逻辑块处理业务逻辑后也可能会触发状态的变更需要调用notify通知所有订阅者64 6566 print(\nSubject: state change)67 self._state randrange(0, 10)6869 print(fSubject: My state has changed to: {self._state})70 self.notify()717273 classObserver(ABC):74 75 订阅者声明对象使用的update.76 7778 abstractmethod79 def update(self, subject: Subject) -None:80 81 接收到状态变更.82 83 pass848586 87 具体订阅者对状态的变更做出具体反应88 899091 classConcreteObserverA(Observer):92 def update(self, subject: Subject) -None:93 if subject._state 3:94 print(ConcreteObserverA: Reacted to the event)959697 classConcreteObserverB(Observer):98 def update(self, subject: Subject) -None:99 if subject._state 0 or subject._state 2:100 print(ConcreteObserverB: Reacted to the event)101102103 if __name__ __main__:104 #The client code.105106 subject ConcreteSubject()107108 observer_a ConcreteObserverA()109 subject.attach(observer_a)110111 observer_b ConcreteObserverB()112 subject.attach(observer_b)113114 subject.some_business_logic()115 subject.some_business_logic()116117 subject.detach(observer_a)118119 subject.some_business_logic()适用场景1当一个对象状态的改变需要改变其他对象或实际对象是事先未知的或动态变化的时可使用观察者模式。2当应用中的一些对象必须观察其他对象时可使用该模式。优点符合开闭原则不用修改发布者代码就能引入新的订阅者类。可以在运行时建立对象之间的联系。缺点订阅者的通知顺序是随机的作者Andy出处http://www.cnblogs.com/onepiece-andy/本文版权归作者和博客园共有欢迎转载但未经作者同意必须在文章页面明显位置给出原文连接否则保留追究法律责任的权利。
http://wiki.neutronadmin.com/news/412655/

相关文章:

  • 哪里可以做外贸网站发布了一个网站 显示建设中
  • 网站建设 运营学网站建设要多少钱
  • 太原免费建站wordpress 显示多媒体
  • 如何做论文网站东营网站制作公司
  • 两支队伍建设专题网站nginx设置wordpress伪静态
  • 云南微网站制作哪家好群晖套件wordpress
  • 关于拳馆网站建设计划书静态网站模板 大气
  • 对于协会的新年祝贺语网站模板在线销售管理系统
  • 龙泉驿区城乡建设局网站查找企业名录
  • 厦门公司做网站北京楼市最新消息
  • 大数据 做网站流量统计wordpress 写文章空白
  • 有哪些制作网站的公司吗建设网站的建筑公司
  • 南昌制作网站软件企业网站建站
  • 广州比较好的网站建设wordpress产品展示
  • 定制开发app软件seo是什么意思的缩写
  • 宁波做网站有哪些公司公司微信公众号网站开发模板
  • 教师网站建设机培训体会免费下载wordpress+支付宝+微信
  • 专做皮具的网站雄安投资建设集团网站
  • 书法 wordpress网站优化哪里好
  • 广州工商学院门户网站县网站建设运维情况自查报告
  • wordpress底部版权信息宁波seo外包
  • 绥芬河建设工程网站无锡网站App微信
  • 唐山seo网站建设做网站切图
  • 淄博网站推广公司青海省电话黄页
  • 广州哪个公司做网站好建设企业网站的模式
  • 中国档案网站建设的特点我注册过的网站
  • 广西南宁网站推广dedecms做图库网站
  • 互联网做网站地推网站建设方案策划书ppt模板下载
  • 网站建设需要的设备修改wordpress密码
  • 做网站编辑器西湖app开发公司