gball个人知识库
首页
基础组件
基础知识
算法&设计模式
  • 操作手册
  • 数据库
  • 极客时间
  • 每日随笔
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 画图工具 (opens new window)
关于
  • 网盘 (opens new window)
  • 分类
  • 标签
  • 归档
项目
GitHub (opens new window)

ggball

后端界的小学生
首页
基础组件
基础知识
算法&设计模式
  • 操作手册
  • 数据库
  • 极客时间
  • 每日随笔
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 画图工具 (opens new window)
关于
  • 网盘 (opens new window)
  • 分类
  • 标签
  • 归档
项目
GitHub (opens new window)
  • 面试

  • 数据库

  • linux

  • node

  • tensorFlow

  • 基础组件

  • 基础知识

  • 算法与设计模式

    • 设计模式

      • 设计模式概览
      • 为什么学习设计模式
      • 面向对象设计
      • 贫血模型与充血模型
      • 设计原则
      • 规范与重构
      • 设计模式大纲
      • 观察者模式
        • 概念
        • 应用
          • jdk的observer和 Observable
          • guava的eventbus
          • spring的eventListener
  • 分布式

  • 疑难杂症

  • go学习之旅

  • 极客时间

  • 知识库
  • 算法与设计模式
  • 设计模式
ggball
2022-08-04

观察者模式

# 观察者模式

# 概念

一个动作的发生可以让其他观察者知道

# 应用

# jdk的observer和 Observable

观察者(observer)注册(addObserver())在被观察者(observable)上,通过方法notifyObservers来执行每个观察者的update方法,有意思的是,为了防止在循环执行每个观察者的update方法时,可能存在删除或者添加观察者,引起结果的不正确,执行notifyObservers方法时,都会先生成一个观察者集合快照,并给他加上了锁,使用快照来循环,就不会出现意外。

# guava的eventbus

事件方法 注册表<classType(入参class类型),action(包含目标对象和执行方法)> 默认是单线程线程池 可以传入线程池 多线程执行监听动作

# spring的eventListener

事件 监听者 发布者 注册表applicationContext 它通过线程池,支持异步非阻塞、同步阻塞这两种类型的观察者模式

上次更新: 2025/06/29, 17:11:31
设计模式大纲
openFeign超时配置

← 设计模式大纲 openFeign超时配置→

最近更新
01
AIIDE
03-07
02
githubActionCICD实战
03-07
03
windows安装Deep-Live-Cam教程
08-11
更多文章>
Theme by Vdoing
总访问量 次 | 总访客数 人
| Copyright © 2021-2025 ggball | 赣ICP备2021008769号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×

评论

  • 评论 ssss
  • 回复
  • 评论 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
  • 回复
  • 评论 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
  • 回复
×