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

高端网站定制设计公司电子商务网站的建设与维护

高端网站定制设计公司,电子商务网站的建设与维护,专业网站建设阿里云,tv电视盒子企业网站模板Java 观察者模式(Observer Pattern)详解 🧠 什么是观察者模式? 观察者模式是一种行为型设计模式,定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生变化时,所有依赖它的对象都会得…

Java 观察者模式(Observer Pattern)详解

🧠 什么是观察者模式?

观察者模式是一种行为型设计模式,定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生变化时,所有依赖它的对象都会得到通知并自动更新。


🎯 使用场景

  • 一个对象状态的变化需要通知多个对象
  • 系统中存在一对多的依赖关系
  • 实现事件处理系统(如GUI、订阅/发布)

🏗️ 模式结构

  • Subject(主题):被观察的对象,提供注册和移除观察者的方法
  • Observer(观察者):定义响应更新的方法
  • ConcreteSubject / ConcreteObserver:具体实现类

✅ 示例:天气预报系统

观察者接口(Observer)

public interface Observer {void update(float temperature, float humidity, float pressure);
}

主题接口(Subject)

public interface Subject {void registerObserver(Observer o);void removeObserver(Observer o);void notifyObservers();
}

具体主题类

import java.util.ArrayList;
import java.util.List;public class WeatherData implements Subject {private List<Observer> observers = new ArrayList<>();private float temperature;private float humidity;private float pressure;@Overridepublic void registerObserver(Observer o) {observers.add(o);}@Overridepublic void removeObserver(Observer o) {observers.remove(o);}@Overridepublic void notifyObservers() {for (Observer o : observers) {o.update(temperature, humidity, pressure);}}public void setMeasurements(float temperature, float humidity, float pressure) {this.temperature = temperature;this.humidity = humidity;this.pressure = pressure;notifyObservers();}
}

具体观察者类

public class CurrentConditionsDisplay implements Observer {private float temperature;private float humidity;@Overridepublic void update(float temperature, float humidity, float pressure) {this.temperature = temperature;this.humidity = humidity;display();}public void display() {System.out.println("当前温度:" + temperature + "℃,湿度:" + humidity + "%");}
}

客户端调用

public class WeatherStation {public static void main(String[] args) {WeatherData weatherData = new WeatherData();CurrentConditionsDisplay display = new CurrentConditionsDisplay();weatherData.registerObserver(display);weatherData.setMeasurements(26.5f, 65.0f, 1013.0f);}
}

✅ 优点

  • 降低耦合性,实现松散耦合的通知机制
  • 易于添加新观察者,符合开闭原则

⚠️ 缺点

  • 观察者太多时通知会影响性能
  • 通知链可能较复杂,调试困难

🧩 使用建议

适合构建事件驱动系统、发布订阅模型,也广泛应用于GUI框架、MVC架构中。

http://www.dtcms.com/a/442885.html

相关文章:

  • FastAPI简单使用
  • 长宁区网站建设网站制微博的网站连接是怎么做的
  • 网站开发流程原理网站开发项目管理文档模板
  • 个人免费建网站网站模版保护域名跳转
  • 做百度手机网站关键词wordpress网店适合
  • ✅阿里云-对象存储OSS-配置和使用(Java)
  • Go语言入门(19)-指针(下)
  • 做国际网站有补贴吗国家企业公示信息系统全国
  • 生物化学Learning Track(13)核酸的性质和研究方法
  • 如何建个使用自己帐户的网站报关做业务可以上哪些网站
  • 游戏币交易平台代理东莞网站优化方法
  • 怎样优化手机网站wordpress oyester
  • phpcms v9网站搬站之后掉出来的文章链接显示为以前网站域名一个人如何注册公司
  • 软件系统核心关系全解析:除聚合外的 6 大关键类型与应用场景
  • 在哪请人做网站国内免费crm系统
  • 龙华做网站公司新网站如何做seo
  • Ubuntu 14.04更换阿里云源,设置系统字体
  • 什么网站广告做多水果网站怎么做
  • 火车票网站建设海口模板建站哪家好
  • int最大值2的次幂
  • 6.3 排序、RMQ
  • 合肥做微网站建设做网站和做程序一样吗
  • 【OpenCV】图像处理实战:边界填充与阈值详解
  • 泉州网站排名哈尔滨seo优化大家
  • Upgrade Win11 subsystem Ubuntu22.04 to ubuntu24.04
  • Ubuntu 24.04 LTS 发行说明
  • 做网站需要网站负责人网站企业模板
  • 《构建可靠 Python 项目:测试金字塔的实践指南与工具解析》
  • 做医药商城网站的公司网站开发角色分配权限
  • 旅游网站建设的建议信阳网站设计