行为型模式 | 观察者模式

一、观察者模式

1、原理

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

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

2、关键角色

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

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

3、UML类图

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

在这里插入图片描述

4、使用场景

适用场景

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

相关推荐

  1. 行为-观察模式

    2024-01-13 07:10:04       50 阅读
  2. 行为-观察模式(Observer)

    2024-01-13 07:10:04       33 阅读
  3. 设计模式_行为模式_观察模式

    2024-01-13 07:10:04       64 阅读
  4. 设计模式_行为模式_观察模式

    2024-01-13 07:10:04       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 07:10:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 07:10:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 07:10:04       87 阅读
  4. Python语言-面向对象

    2024-01-13 07:10:04       96 阅读

热门阅读

  1. go 设计模式之观察者模式

    2024-01-13 07:10:04       53 阅读
  2. 机器学习之集成学习AdaBoost

    2024-01-13 07:10:04       53 阅读
  3. JsonPath

    2024-01-13 07:10:04       56 阅读
  4. 应用架构演变过程、rpc及Dubbo简介

    2024-01-13 07:10:04       43 阅读
  5. 微信小程序显示和隐藏分享按钮

    2024-01-13 07:10:04       65 阅读
  6. ffmpeg全景视频转普通视角视频的filter开发

    2024-01-13 07:10:04       58 阅读
  7. 使用python写了一个sql填充工具

    2024-01-13 07:10:04       44 阅读
  8. Android Studio 分别运行flutter 的debug和release版本

    2024-01-13 07:10:04       57 阅读
  9. go 修改postgresql的配置参数

    2024-01-13 07:10:04       60 阅读
  10. SQL执行时间过长如何优化

    2024-01-13 07:10:04       53 阅读
  11. vue一维码,二维码生成

    2024-01-13 07:10:04       57 阅读