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

网站招聘栏怎么做西安大雁塔在哪个区

网站招聘栏怎么做,西安大雁塔在哪个区,中国制造网外贸网官网登录入口,秀洲区建设中心小学网站观察者模式 观察者模式#xff08;Observer Pattern#xff09;是一种行为型设计模式#xff0c;它定义了一种一对多的依赖关系#xff0c;使得当一个对象的状态发生改变时#xff0c;所有依赖于它的对象都能得到通知并自动更新。 核心思想#xff1a; 观察者模式将**观… 观察者模式 观察者模式Observer Pattern是一种行为型设计模式它定义了一种一对多的依赖关系使得当一个对象的状态发生改变时所有依赖于它的对象都能得到通知并自动更新。 核心思想 观察者模式将**观察者Observer和被观察者Subject**解耦允许对象独立变化并且当被观察者状态变化时自动通知所有观察者。 观察者模式中的角色 Subject被观察者负责维护观察者列表并在自身状态发生变化时通知所有观察者。它提供注册、移除和通知观察者的方法。Observer观察者定义一个接口用于接收来自被观察者的通知。ConcreteSubject具体被观察者实现 Subject 接口包含具体的状态并在状态变化时调用 notifyObservers()。ConcreteObserver具体观察者实现 Observer 接口并在被观察者状态变化时更新自身。 观察者模式的 UML 原理类图 类图解释 Subject被观察者接口 定义了方法 registerObserver()、removeObserver() 和 notifyObservers()用于管理观察者的注册、移除和通知操作。 Observer观察者接口 定义了 update() 方法观察者通过该方法接收来自被观察者的更新通知。 ConcreteSubject具体被观察者 维护一个观察者列表并保存自身的状态。当状态发生变化时调用 notifyObservers() 方法通知所有观察者。提供了 getState() 和 setState() 方法来管理其状态并在状态更新时调用通知方法。 ConcreteObserver具体观察者 持有对具体被观察者的引用并实现 update() 方法在被观察者状态变化时更新自身。 案例天气预报系统 ☀️️ 场景说明 假设我们有一个天气预报系统它实时监控天气数据并向多个显示设备如手机、电视、平板等推送更新信息。系统中气象站负责监控天气数据当气温、湿度等信息发生变化时它会通知所有的显示设备。这些设备会自动更新并显示最新的天气信息。 代码实现 Step 1: 定义 Observer 接口 // 观察者接口 public interface Observer {void update(float temperature, float humidity, float pressure); } Step 2: 定义 Subject 接口 // 被观察者接口 public interface Subject {void registerObserver(Observer observer);void removeObserver(Observer observer);void notifyObservers(); } Step 3: 实现具体的 Subject 类 import java.util.ArrayList; import java.util.List;// 具体的被观察者天气数据 public class WeatherData implements Subject {private ListObserver observers;private float temperature;private float humidity;private float pressure;public WeatherData() {observers new ArrayList();}Overridepublic void registerObserver(Observer observer) {observers.add(observer);}Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update(temperature, humidity, pressure); // 通知所有观察者}}// 当天气数据变化时通知观察者public void setMeasurements(float temperature, float humidity, float pressure) {this.temperature temperature;this.humidity humidity;this.pressure pressure;notifyObservers(); // 通知观察者} } Step 4: 实现具体的 Observer 类 PhoneDisplay 观察者 // 具体观察者手机显示器 public class PhoneDisplay implements Observer {private float temperature;private float humidity;private float pressure;Overridepublic void update(float temperature, float humidity, float pressure) {this.temperature temperature;this.humidity humidity;this.pressure pressure;display();}public void display() {System.out.println(Phone Display - Temp: temperature °C, Humidity: humidity %, Pressure: pressure Pa);} } TVDisplay 观察者 // 具体观察者电视显示器 public class TVDisplay implements Observer {private float temperature;private float humidity;private float pressure;Overridepublic void update(float temperature, float humidity, float pressure) {this.temperature temperature;this.humidity humidity;this.pressure pressure;display();}public void display() {System.out.println(TV Display - Temp: temperature °C, Humidity: humidity %, Pressure: pressure Pa);} } Step 5: 测试观察者模式 public class ObserverPatternDemo {public static void main(String[] args) {// 创建被观察者天气数据WeatherData weatherData new WeatherData();// 创建观察者PhoneDisplay phoneDisplay new PhoneDisplay();TVDisplay tvDisplay new TVDisplay();// 注册观察者weatherData.registerObserver(phoneDisplay);weatherData.registerObserver(tvDisplay);// 模拟天气数据变化weatherData.setMeasurements(25.0f, 65.0f, 1013.0f);weatherData.setMeasurements(28.0f, 70.0f, 1010.0f);} } 输出结果 Phone Display - Temp: 25.0°C, Humidity: 65.0%, Pressure: 1013.0Pa TV Display - Temp: 25.0°C, Humidity: 65.0%, Pressure: 1013.0Pa Phone Display - Temp: 28.0°C, Humidity: 70.0%, Pressure: 1010.0Pa TV Display - Temp: 28.0°C, Humidity: 70.0%, Pressure: 1010.0Pa Spring Boot 中使用观察者模式 在 Spring Boot 框架中观察者模式主要可以通过 Spring 的事件驱动机制Event Driven 来实现。这是 Spring 框架对观察者模式的原生支持允许不同的组件之间进行解耦通信使得事件的发布者和监听者观察者可以独立变化。 Spring 事件驱动机制的核心概念 事件Event类似于观察者模式中的 “Subject”被观察者当事件发生时发布该事件。事件监听器Listener类似于观察者监听特定的事件并在事件发布时自动响应。事件发布器Publisher发布事件让所有监听器接收事件通知。 如何在 Spring Boot 中实现观察者模式步骤详解** Step 1: 创建自定义事件类 自定义事件类需要继承 Spring 提供的 ApplicationEvent 类。事件类可以封装一些需要传递的状态信息。 import org.springframework.context.ApplicationEvent;// 自定义事件类继承 ApplicationEvent public class CustomEvent extends ApplicationEvent {private String message;public CustomEvent(Object source, String message) {super(source);this.message message;}public String getMessage() {return message;} } Step 2: 创建事件监听器 实现 ApplicationListener 接口或使用注解 EventListener 来创建监听器。监听器会在事件发布时自动被调用。 import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component;// 事件监听器 Component public class CustomEventListener {// 使用 EventListener 注解监听自定义事件EventListenerpublic void handleCustomEvent(CustomEvent event) {System.out.println(Received event - event.getMessage());} } Step 3: 创建事件发布器 使用 ApplicationEventPublisher 来发布事件。当需要通知观察者时可以发布自定义事件。 import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component;// 事件发布器 Component public class CustomEventPublisher {private final ApplicationEventPublisher publisher;public CustomEventPublisher(ApplicationEventPublisher publisher) {this.publisher publisher;}// 发布事件public void publishEvent(String message) {CustomEvent event new CustomEvent(this, message);publisher.publishEvent(event); // 发布自定义事件} } Step 4: 使用事件发布器 在 Spring Boot 应用中通过事件发布器发布事件触发所有监听该事件的观察者。 RestController public class BasicController {PostMapping(/publish)void publish(RequestBody String message){eventPublisher.publishEvent(message);}}输出结果 Received event - {message: hello }Spring 事件驱动机制 VS 传统观察者模式 相似性 解耦事件发布者ApplicationEventPublisher和事件监听器ApplicationListener 或 EventListener之间是解耦的它们通过事件进行通信。一对多一个事件可以被多个监听器同时监听符合观察者模式的一对多依赖关系。 不同点 事件发布是异步的Spring 的事件驱动机制允许事件的异步处理如果配置了 Async 注解而传统的观察者模式通常是同步执行的。更加灵活的监听机制Spring 提供了基于注解的 EventListener简化了监听器的注册过程并可以使用条件过滤等高级功能。 在 Spring Boot 中通过其内置的 事件驱动机制可以轻松实现观察者模式。这种机制不仅保留了观察者模式的基本思想还进一步增强了可扩展性和灵活性支持异步处理、注解配置等高级特性。它在处理系统之间的解耦和事件驱动编程时尤其强大非常适合使用在实际项目中。 使用观察者模式的典型场景 异步事件通知如用户注册、邮件发送等需要异步处理的操作。解耦组件间的通信模块化应用中各模块之间的消息传递和事件处理。 总结 观察者模式 提供了一种解耦对象之间的依赖关系的方式使得被观察者和观察者可以在不直接相互依赖的情况下进行通信。通过观察者模式当一个对象发生变化时所有依赖于它的对象都会自动收到通知并作出相应的处理。
http://www.sczhlp.com/news/234335/

相关文章:

  • 湖南响应式网站公司新余网站设计
  • 使用网站模板快速建站京津冀协同发展10周年
  • 查看别人网站的访问量深圳对留学生创业政策
  • 大型网站 开发语言商务网站建设注意事项
  • 网站公司wordpress数据表不可用
  • 中山市有什么网站推广公寓注册公司需要什么条件
  • 服装网站建设公司有哪些wordpress分类id
  • 在线制作表白网站赣榆网站建设
  • 网站的建设的公司出名o2o平台搭建
  • 广德做网站备案过的网站换域名
  • 网站建设固定资产投资吉林省建设厅官网查询
  • 贵阳好的网站建设上海中小企业发展服务中心
  • 网站推广公司哪家好运城网站开发公司
  • 机械配件网站建设捡个将军做男友啥网站能看
  • 西安市城乡建设管理局网站的公示栏6html网页设计代码实例
  • 案例解析:养老服务标杆吉宝欣岳年借助纷享销客CRM实现数字化转型升级
  • CentOS7将yum源更换为国内源保姆级教程
  • 20232407 2025-2026-1 《网络与系统攻防技术》 实验三实验报告
  • 20232325 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • centos7通过阿里云的镜像站安装最新的docker服务
  • 免费建设网站赚钱网站建设需要的公司
  • 登录住房城乡建设部官方网站js弹出网站
  • 潍坊 网站建设个人购物网站
  • 岳麓区做网站什么做网站推广
  • 九歌人工智能诗歌写作网站学校网站建设栏目
  • 推广网站哪家做的好网站语音转写怎么做
  • 杭州商城型网站建设响应式网站设计
  • 大淘客联盟做网站山西网站建设免费咨询
  • 网站开发前端课程北京网站备案地址
  • 网站正在建设中 代码c++ 网站开发