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

Java设计模式-观察者模式(19)

Java中的观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,这样一来,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。观察者模式使得你可以独立地改变目标和观察者,让两者之间的耦合度降低。

基本组成部分

观察者模式主要包含以下四个角色:

  1. Subject(主题/被观察者):

    • 定义了添加观察者、移除观察者和通知观察者的方法。

    • 维护一个观察者集合。

    • 当主题状态发生改变时,会通知所有注册的观察者。

  2. Observer(观察者):

    • 为那些在目标发生改变时需要得到通知的对象定义一个接口。

    • 提供一个更新自己的方法,通常叫做update()

  3. ConcreteSubject(具体主题/具体被观察者):

    • 实现Subject接口,维护自己的状态。

    • 当状态发生改变时,调用notifyObservers()方法通知所有观察者。

  4. ConcreteObserver(具体观察者):

    • 实现Observer接口中的update()方法,以便在状态变化时得到通知并做出响应。

Java内置支持

在Java中,

相关文章:

  • 用户态网络缓冲区设计
  • JavaEE技术之分布式事务(理论、解决方案、Seata解决分布式事务问题、Seata之原理简介、断点查看数据库表数据变化)
  • 51汇编--AD和DA
  • 淄博公司商标驳回复审条件及流程
  • WPS PPT学习笔记 1 排版4原则等基本技巧整理
  • 智能农业时代:智能生态网络与数据流通的融合
  • AI三级淋巴结构·预测癌症预后和免疫疗法反应
  • 【MySQL精通之路】InnoDB(3)-MVCC多版本管理
  • 分布式理论--BASE
  • SpringBoot中注解@RestController | @ResponseBody | @Controller
  • SD00HA 集成电路IC电压负载开关USB电源降压SOT23-5封装
  • 【网站项目】SpringBoot380百天公司财务管理系统
  • GMSL图像采集卡,适用于无人车、自动驾驶、自主机器、数据采集等场景,支持定制
  • 软考 软件设计师 场景分析题 速成篇
  • linux-x86_64-musl 里面的musl是什么意思?
  • 深入了解以太坊
  • docker python 配置
  • Java Agent 学习笔记
  • Java深入 - 深入理解Java集合
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 后端_ThinkPHP5
  • 前端性能优化--懒加载和预加载
  • 前端之Sass/Scss实战笔记
  • 微信小程序--------语音识别(前端自己也能玩)
  • 译米田引理
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 你对linux中grep命令知道多少?
  • ​Spring Boot 分片上传文件
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • ‌移动管家手机智能控制汽车系统
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # 飞书APP集成平台-数字化落地
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (第30天)二叉树阶段总结
  • (五)c52学习之旅-静态数码管
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • /boot 内存空间不够
  • /etc/shadow字段详解
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • ??javascript里的变量问题
  • @AliasFor注解
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • []指针
  • [C++]C++类基本语法
  • [C++]入门基础(1)