行为型模式 | 观察者模式

一、观察者模式

1、原理

观察者模式又叫做发布-订阅(Publish/Subscribe)模式,定义了一种一对多的依赖关系。让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
软件系统常常要求在某一个对象的状态发生变化的时候,某些其它的对象做出相应的改变。观察者模式是解决该类问题的很优秀的方案,使用该模式减少对象之间的耦合,提升系统的可扩展性。

2、关键角色

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

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

3、UML类图

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

4、使用场景

适用场景

  • 对象间存在一对多关系,一个对象的状态发生改变会影响其他对象
  • 实现类似广播机制的功能,不需要知道具体收听者,只需分发广播,系统中感兴趣的对象会自动接收该广播
相关推荐
安冬的码畜日常9 小时前
【JUnit实战3_27】第十六章:用 JUnit 测试 Spring 应用:通过实战案例深入理解 IoC 原理
spring·观察者模式·设计模式·单元测试·ioc·依赖注入·junit5
czy878747514 小时前
C语言实现观察者模式
c语言·观察者模式
Miqiuha10 天前
观察者模式学习
学习·观察者模式
金宗汉17 天前
《宇宙递归拓扑学:基于自指性与拓扑流形的无限逼近模型》
大数据·人工智能·笔记·算法·观察者模式
kyle~19 天前
设计模式---观察者模式
服务器·观察者模式·设计模式
Mr_WangAndy20 天前
C++设计模式_行为型模式_观察者模式Observer(发布-订阅(Publish-Subscribe))
c++·观察者模式·设计模式
o0向阳而生0o1 个月前
107、23种设计模式之观察者模式(16/23)
观察者模式·设计模式
青草地溪水旁1 个月前
设计模式(C++)详解——观察者模式(Observer)(1)
c++·观察者模式·设计模式
星空寻流年1 个月前
设计模式第六章(观察者模式)
网络·观察者模式·设计模式
大飞pkz1 个月前
【设计模式】观察者模式
开发语言·观察者模式·设计模式·c#