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

行为型模式 | 观察者模式

一、观察者模式

1、原理

观察者模式又叫做发布-订阅(Publish/Subscribe)模式,定义了一种一对多的依赖关系。让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

软件系统常常要求在某一个对象的状态发生变化的时候,某些其它的对象做出相应的改变。观察者模式是解决该类问题的很优秀的方案,使用该模式减少对象之间的耦合,提升系统的可扩展性。

2、关键角色

观察者模式有下面几个关键的角色,如下:

  • 抽象主题(Subject):抽象主题提供一组接口,可以增加和删除观察者对象,每个主题都可以有任何数量的观察者
  • 具体主题(ConcreteSubject):保存注册的观察者及主题自身的状态,当主题的状态发生变化时通知观察者
  • 抽象观察者(Observer):为所有的具体观察者定义一个接口,在得到主题的通知时更新自己
  • 具体观察者(ConcreteObserver):保存主题的状态,实现抽象观察者所要求的更新接口,以便使本身的状态与主题的状态保持一致

3、UML类图

下面是观察者模式对应的UML类图,如下:

在这里插入图片描述

4、使用场景

适用场景

  • 对象间存在一对多关系,一个对象的状态发生改变会影响其他对象
  • 实现类似广播机制的功能,不需要知道具体收听者,只需分发广播,系统中感兴趣的对象会自动接收该广播
http://www.lryc.cn/news/278643.html

相关文章:

  • Python面向对象之继承
  • 如何使用CFImagehost结合内网穿透搭建私人图床并无公网ip远程访问
  • Wargames与bash知识14
  • 2020年认证杯SPSSPRO杯数学建模C题(第二阶段)抗击疫情,我们能做什么全过程文档及程序
  • JAVA基础学习笔记-day17-反射
  • 经典算法-模拟退火算法的python实现
  • 谷粒学院项目redirect_uri 参数错误微信二维码登录
  • Jenkins+nexus
  • 「JavaSE」类和对象1
  • Ubuntu server搭建dhcp服务器
  • 2024--Django平台开发-Web框架和Django基础(二)---Mysql多版本共存(Mac系统)
  • Pytorch 反向传播 计算图被修改的报错
  • android studio设置gradle和gradle JDK版本
  • Android 15即将到来,或将推出5大新功能特性
  • sqlalchemy 事务自动控制(类java aop)
  • vue2-手写轮播图
  • Google I/O大会:Android 13
  • VUE指令(一)
  • 微信小程序开发学习笔记《7》全局配置以及小程序窗口
  • Vue、uniApp、微信小程序、Html5等实现数缓存
  • 如何将ArcGIS工程文件迁移到ArcGIS Pro内
  • Jenkins基础篇--添加用户和用户权限设置
  • C语言基础内容(七)——第08章_C语言常用函数
  • CRM系统针对销售管理有哪些功能?如何帮助销售效率增长?
  • 基于Pixhawk和ROS搭建自主无人车(一):底盘控制篇
  • 部署 Spring Boot 应用中文文档
  • 【数据库原理】(23)实际应用中的查询优化方法
  • MySQL中datetime和timestamp的区别
  • 2024年如何使用WordPress构建克隆Udemy市场
  • (leetcode)Z字形变换 -- 模拟算法