监听模式

news/2024/10/22 18:46:58/

目录

 

一、监听模式概

二、代码实现

三、监听模式在openstack中的使用

1.neutron_lib.callbacks.registry模块

2.rabbitmq


一、监听模式概

监听模式(观察者模式)是指观察对象监听被观察对象,当被观察对象发生变化时,所有的观察对象都能及时的知道并且自动更新,被观察对象和观察对象之间的关系是1对多。

二、代码实现

在示例中waterHeater类相当于一个被观察对象,WashingMode和DrinkingMode类相当于观察对象,waterHeater类每一个温度变化都会将这个变化通知给WashingMode和DrinkingMode类,WashingMode和DrinkingMode类会根据收到的通知完成相应的处理。

# -*- coding: utf-8 -*- 
# @Author : zhangpanpan
# @File : ztest2.pyfrom abc import abstractmethodclass WaterHeater:def __init__(self):self.__observices = []self.__temperature = 25def getTemperature(self):return self.__temperaturedef setTemperature(self, temperature):self.__temperature = temperatureprint "当前的温度为: {}摄氏度".format(self.__temperature)self.notifies()def addObservice(self, observice):self.__observices.append(observice)def notifies(self):for o in self.__observices:o.update(self)class Observice:@abstractmethoddef update(self, waterHeater):passclass WashingMode(Observice):def update(self, waterHeater):if waterHeater.getTemperature() == 50:print "水已烧好,可以洗澡,当前水温为: {}".format(waterHeater.getTemperature())class DrinkingMode(Observice):def update(self, waterHeater):if waterHeater.getTemperature() == 100:print "水已烧好,可以饮用,当前水温为: {}".format(waterHeater.getTemperature())def testWaterHeater():heater = WaterHeater()washingObjser = WashingMode()drinkingObjser = DrinkingMode()heater.addObservice(washingObjser)heater.addObservice(drinkingObjser)for i in range(110):heater.setTemperature(i)testWaterHeater()#运行结果
水已烧好,可以洗澡,当前水温为: 50
水已烧好,可以饮用,当前水温为: 100

三、监听模式在openstack中的使用

1.neutron_lib.callbacks.registry模块

neutron_lib.callbacks.registry模块称为消息的订阅/发布模块,使用registry.notify方法来发布消息,它相当于一个被观察者对象;registry.subscribe用来订阅消息,它相当于一个观察对象。

2.rabbitmq


http://www.ppmy.cn/news/345072.html

相关文章

网络监听

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>Title</title></head><body><script type"text/javascript">// 1.ononline:网络连通时触发这个事件window.addEventListener("onli…

watch监听中 立即监听和深度监听

wacth通常用来监听数据的变化如下代码&#xff0c;默认是被监听数据变化时执行&#xff0c; 其中handler默认情况下不用写&#xff0c;下图是需要这个监听立即被执行&#xff0c;就是首次进来没变化的时候就执行设置属性&#xff0c; 不需要立即执行就不用添加immediate这个属…

什么是入耳式监听器,谁应该使用它们?

In-ear monitors (IEMs) have gained widespread popularity among audiophiles recently due to their pristine audio quality. Let’s check out what makes them different from other listening devices. 入耳式监听器(IEM)由于其原始的音频质量,最近在发烧友中得到了广泛…

网络音频监听器

View demo 查看演示 Download Source 下载源 The mighty stylophone. One of the greatest musical instruments ever created. Used by the likes of David Bowie, Kraftwerk and pretty much no-one else inbetween, I’ll show you how to make this fantastic invention us…

ios耳机监听

1 .插入耳机的时候并没有切换到耳机播放 仍然是扬声器播放2 .当一开始手机上已经插入耳机时 &#xff0c;这时候开启音频播放时 仍然是扬声器播放因此今天主要谈的就是从这两个问题&#xff1a;先来解决第一个问题:其实解决耳机插入时扬声器播放很明显我们需要获取耳机插入的这…

监听器接口

监听器接口 1>介绍2>作用域对象3>监听器接口实现类开发规范4>ServletContextListener接口5>ServletContextAttributeListener接口6>监听器接口提高程序运行速度 1>介绍 1、一组来自于Servlet规范下接口&#xff0c;共有8个接口。在Tomcat存在servlet-api…

监听器一:监听器简介

监听器是什么&#xff1f; 监听器通俗来说&#xff1a;对某一个事物进行实时监听&#xff0c;如果这个事物产生了状态上的变化&#xff0c;那么会自动地触发后续的反应&#xff1b; 如&#xff0c;生活中汽车的自动刹车系统&#xff1b; 监听的应用对象有&#xff1a; 过滤器…

监听器到底是什么,有什么用

什么是监听器 监听器的概念 所谓监听器就是对内置对象的状态或者属性变化进行监听并且做出反应的特殊servlet,并且也需要在web.xml文件中进行相关配置。 内置对象的状态变化:初始化和销毁,也就是说当内置对象初始化、销毁我们也能监听,并且做出相应的反应。 内置对象内的…