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

软件销售网站模板北京百度总部

软件销售网站模板,北京百度总部,网站建设图片链接方法,电脑做服务器发布网站吗据说监听器模式也是mq实现的原理, 不过mq我还没来得及深入学习, 先用spring来理解一下吧 Spring事件发布监听器ApplicationListener原理- 观察者模式 什么是观察者模式一个Demo深入认识一下观察者模式Spring中的事件发布监听ps 什么是观察者模式 大家都听过一个故事叫做烽火戏…

据说监听器模式也是mq实现的原理, 不过mq我还没来得及深入学习, 先用spring来理解一下吧

Spring事件发布监听器ApplicationListener原理- 观察者模式

  • 什么是观察者模式
    • 一个Demo深入认识一下观察者模式
    • Spring中的事件发布监听
    • ps

什么是观察者模式

大家都听过一个故事叫做烽火戏诸侯
古时候, 总会有人在城墙上守岗, 为的就是观察是否有来兵, 当守卫观察到不远处有来兵, 就会立刻大喊"打仗了, 打仗了", 这个时候,( 同时点起烽火), 那么这个守卫就是观察者, 观察者观察到的打仗这一事件, 会向各方诸侯传播, 大家一起共同对抗敌人
这就是观察者模式

一个Demo深入认识一下观察者模式

一个观察者
在这里插入图片描述

/*** 观察者 观察温度, 湿度 , 气压*/public interface Observer {void update(float temp, float humidity, float pressure);
}

一个"诸侯"- 当前的气候条件
诸侯其实和观察者是同样的, 在战斗来临时, 都要参与打仗这一事件
在这里插入图片描述

/*** @author Green写代码* @date 2024-03-05 18:45* 展示当前的温度适度气压*/
public class CurrentConditionsDisplay implements Observer {/*** 注册一个观察者* @param weatherData*/public CurrentConditionsDisplay(Subject weatherData) {weatherData.resisterObserver(this);}@Overridepublic void update(float temp, float humidity, float pressure) {System.out.println("当前的温度, 湿度, 气压为:  " + temp + " " + humidity + " " + pressure);}
}

另一个"诸侯" - 统计的气候
在这里插入图片描述

/*** @author Green写代码* @date 2024-03-05 18:45* 统计显示*/
public class StatisticsDisplay implements Observer {public StatisticsDisplay(Subject weatherData) {weatherData.resisterObserver(this);}@Overridepublic void update(float temp, float humidity, float pressure) {System.out.println("统计显示当前温度湿度气压: " + temp + " " + humidity + " " + pressure);}
}

气温的类

import java.util.ArrayList;
import java.util.List;/*** @author Green写代码* @date 2024-03-05 18:45*/
public class WeatherData implements Subject {private List<Observer> observers;private float temperature;private float humidity;private float pressure;public WeatherData() {observers = new ArrayList<>();}public void setMeasurements(float temperature, float humidity, float pressure) {this.temperature = temperature;this.humidity = humidity;this.pressure = pressure;notifyObserver();}@Overridepublic void resisterObserver(Observer o) {observers.add(o);}@Overridepublic void removeObserver(Observer o) {int i = observers.indexOf(o);if (i >= 0) {observers.remove(i);}}@Overridepublic void notifyObserver() {for (Observer o : observers) {o.update(temperature, humidity, pressure);}}
}

开始执行

public class ObserverTest {public static void main1(String[] args) {WeatherData weatherData = new WeatherData();CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData);weatherData.setMeasurements(0, 0, 0);weatherData.setMeasurements(1, 1, 1);}
}

当设置一个气候的时候setMeasurements, 当前温度和统计温度都要随之变化, 因为他们都继承了观察者, 在温度变化的时候, 要共同update温度

Spring中的事件发布监听

发布一个事件
在这里插入图片描述
监听
在这里插入图片描述
发布和监听是怎么联系起来的呢
我们来看看publishEvent底层

  • 首先会将事件转化为ApplicationContext对象, 暂时不是我们所谈论的重点
    之后会判断是都是一个earlyApplicationEvents , 英译过来是一个早的事件, 什么叫早的事件?大致就是Spring容器启动的时候, 内部做的一些事件监听, 这个和我们所研究的也不匹配
    然后就会走到多播器, 将我们的事件广播出去, 那么监听器就有机会监听到了

在这里插入图片描述
让我们继续看这个多播器做了些啥

在这里插入图片描述
追踪到这里我们发现, 这不是监听器内部的onApplicationEvent吗
到这里监听器完全监听到了事件, 可以执行监听到的事件了

在这里插入图片描述

ps

前面的烽火戏诸侯是我自己想出来的例子, 可能不贴切, 但是观察者本身不是一个很难理解的点, 观察观察, 很容易想明白嘛

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

相关文章:

  • 做网站的上海公司有哪些广东省公共资源交易中心地址
  • 网站开发主要有两个阶段网上有几个购物平台
  • 国外做彩票网站推广是合法的吗室外平台设计
  • 云浮新增病例详情跟我学seo
  • 内网网站建设的亮点特点鲜花网站模板
  • 深圳网站设计很棒 乐云践新崇左网站搭建
  • 自己怎么建个网站赚钱汽车网站营销
  • 做一手房产中介用什么网站好百度seo霸屏软件
  • 网站开发的毕业设计小吃加盟网站大全
  • 哪些网站是做食品广州海珠区有什么大学
  • 建设图片展示网站小型公司网站建设论文
  • 怎样弄免费网站Wordpress 图片左右滑动
  • 网站平台被骗了怎么办陕西网站维护
  • 网站地图怎么使用快速优化工具
  • 永久免费的移动建站平台wordpress同步博客插件
  • 安徽省城乡和建设厅网站云南省建设测量员注册网站
  • 网站升级方案网站seo怎么优化
  • 中山cp网站建设江苏嘉瑞通建设有限公司网站
  • 建设网站如何加入搜索phthon网站开发
  • 钓鱼网站的域名怎么不稳定建筑公司一般在哪里招人
  • 家居小程序源码下载新郑做网站优化
  • 男女做污的事情网站成功的软文营销案例
  • 建设网站的步骤知乎类似 wordpress的软件
  • 网站建设 客户同程腾讯云服务器如何建设网站
  • 平面设计类网站手机网页禁止访问解除
  • 企业购物网站建设个人怎么做电影相关的网站
  • 市面上有什么搭建网站工作室家装用什么软件设计
  • 郑州外贸网站建设哪家好广元商城网站开发
  • c mvc网站开发实例网站开发部组织架构
  • 可以做书的网站建设部2018年工作要点网站