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

任县城乡建设局网站福建泉州做网站公司

任县城乡建设局网站,福建泉州做网站公司,一级建造师价格最新行情,东莞手机网站站定制开发23种计模式之 前言 #xff08;5#xff09;单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、#xff08;11#xff09;策略模式、责任链模式、命令模式、中介者模…23种计模式之 前言 5单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、11策略模式、责任链模式、命令模式、中介者模式、模板模式、迭代器模式、访问者模式、观察者模式、解释器模式、备忘录模式、状态模式 设计原则 19-Python与设计模式–观察者模式 一、火警报警器 在门面模式中我们提到过火警报警器。在当时我们关注的是通过封装减少代码重复。 而今天我们将从业务流程的实现角度来再次实现该火警报警器。class AlarmSensor:def run(self):print Alarm Ring... class WaterSprinker:def run(self):print Spray Water... class EmergencyDialer:def run(self):print Dial 119...以上是门面模式中的三个传感器类的结构。仔细分析业务报警器、洒水器、拨号器都是“观察” 烟雾传感器的情况来做反应的。因而他们三个都是观察者而烟雾传感器则是被观察对象了。 根据分析将三个类提取共性泛化出“观察者”类并构造被观察者。观察者如下 class Observer:def update(self):pass class AlarmSensor(Observer):def update(self,action):print Alarm Got: %s % actionself.runAlarm()def runAlarm(self):print Alarm Ring... class WaterSprinker(Observer):def update(self,action):print Sprinker Got: %s % actionself.runSprinker()def runSprinker(self):print Spray Water... class EmergencyDialer(Observer):def update(self,action):print Dialer Got: %s%actionself.runDialer()def runDialer(self):print Dial 119...观察者中定义了update接口如果被观察者状态比较多或者每个具体的观察者方法比较多 可以通过update传参数进行更丰富的控制。 下面构造被观察者。 class Observed:observers[]actiondef addObserver(self,observer):self.observers.append(observer)def notifyAll(self):for obs in self.observers:obs.update(self.action) class smokeSensor(Observed):def setAction(self,action):self.actionactiondef isFire(self):return True被观察者中首先将观察对象加入到观察者数组中若发生情况则通过notifyAll通知各观察者。 业务代码如下 if __name____main__:alarmAlarmSensor()sprinkerWaterSprinker()dialerEmergencyDialer()smoke_sensorsmokeSensor()smoke_sensor.addObserver(alarm)smoke_sensor.addObserver(sprinker)smoke_sensor.addObserver(dialer)if smoke_sensor.isFire():smoke_sensor.setAction(On Fire!)smoke_sensor.notifyAll()打印如下 Alarm Got: On Fire! Alarm Ring… Sprinker Got: On Fire! Spray Water… Dialer Got: On Fire! Dial 119… 二、观察者模式 观察者模式也叫发布-订阅模式其定义如下定义对象间一种一对多的依赖关系使得当该对象状态改变时 所有依赖于它的对象都会得到通知并被自动更新。观察者模式的通知方式可以通过直接调用等同步方式实现如函数调用HTTP接口调用等 也可以通过消息队列异步调用同步调用指被观察者发布消息后必须等所有观察者响应结束后才可以进行 接下来的操作异步调用指被观察者发布消息后即可进行接下来的操作。。 事实上许多开源的消息队列就直接支持发布-订阅模式如Zero MQ等。三、观察者模式的优点和应用场景 优点 1、观察者与被观察者之间是抽象耦合的 2、可以将许多符合单一职责原则的模块进行触发也可以很方便地实现广播。应用场景 1、消息交换场景。如上述说到的消息队列等 2、多级触发场景。比如支持中断模式的场景中一个中断即会引发一连串反应就可以使用观察者模式。四、观察者模式的缺点 1、观察者模式可能会带来整体系统效率的浪费 2、如果被观察者之间有依赖关系其逻辑关系的梳理需要费些心思。
http://www.w-s-a.com/news/727423/

相关文章:

  • 网站建设开发报告论文hao123上网从这里开始官方
  • 阿里云建网站费用徐州房产网
  • 网站统计分析平台做企业礼品的网站
  • 做可视化图表的网站wordpress批量导入tag
  • txt怎么做网站网站的链接结构包括
  • 适合平面设计师的网站网络营销专员的就业前景
  • 好订单网服装加工接单谷歌seo网站推广怎么做
  • seo泛站群外贸网站建设团队
  • 网站免费维护建立网站国家城乡建设部投诉网站
  • 企业网站必须备案吗wordpress导入数据库依然无法链接
  • 浅谈高校网站群的建设网站不支持m.域名
  • 和平网站建设公司做实验教学视频的网站
  • 音乐网站源码带手机版WordPress菜单调用不出
  • 昆明网站设计都需要设计什么网络推广岗位职责和任职要求
  • 国外公司网站模板网站建设公司选择意见书
  • 如何创建一个网站卖东西郑州 网站建设公司
  • 石景山郑州阳网站建设南京网站搜索引擎优化
  • 一个网站需要哪些备案书店网站建设策划书总结
  • 网站建设的重点是什么注册网站空间
  • 网站公司企业宗旨我的网站 dedecms
  • 沧州网站优化做详情图的网站
  • 中国建设银行公积金网站wordpress表单 post
  • 找权重高的网站方法wordpress视频网站上传视频
  • 营销型网站架构师迁移wordpress500错误
  • 做网站还是博客由()承担
  • wordpress 导购站模板中国最新军事新闻直播83军
  • 公众号h5网站开发wordpress文章主图
  • ps怎么艺术字字体设计网站我想自己做网站
  • 北京做机柜空调的网站模板网站和插件
  • 手机购物网站模板wordpress添加分类文档