C++观察者模式Observer

组件协作

--(都是晚绑定的)

----观察者模式

为某些对象建立一种通知依赖 的关系,

只要这个对象状态发生改变,观察者对象都能得到通知。

但是依赖关系要松耦合,不要太依赖。

eg:做一个文件分割器,需要一个界面mainform。里面有文件路径,文件号。

但是如果文件太大了,我想分割,想要一个进度条。依赖倒置原则:高层模块不能依赖底层模块。

Bar上述这样就不可以,因为编译时依赖了,这样是违背依赖倒置的。

怎么样重构这个代码?是不是找filesplitter的父类就可以了呢?也很粗浅。

Bar实际上就是一种通知,不需要一种控件 来表达。而需要抽象的通知机制。

直接写一个IProgress类当抽象接口,然后多继承,然后重写、调用。

上图,从绿色到黑色。从不良耦合到良好耦合。

如果需要多个观察者呢?

相关推荐
火柴就是我8 小时前
Flutter 项目本地 Maven 引入 AAR 找不到?一次 Gradle 路径问题排查
android
火柴就是我8 小时前
Android 打包报错 25.0.3
android·前端
码上有光8 小时前
Linux进程通信——共享内存、消息队列和信号量
android·linux·运维·共享内存·通信
Android打工仔12 小时前
Kotlin 协程源码解析:DispatchedContinuation 里的 Dispatcher 从哪里来?
android·kotlin
打工仔折腾 AI12 小时前
从BPE到SentencePiece:Transformer分词原理与Python实战对比
android·人工智能·python·深度学习·langchain·transformer·ai agent 实战
Dovis(誓平步青云)13 小时前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
恋猫de小郭17 小时前
KMP 又改了编译流程, Separate Compilation 禁止了 `commonMain` 的依赖穿透
android·前端·flutter
执明wa17 小时前
Android RecyclerView 实战:点击频道栏切换对应内容
android·开发语言·windows·microsoft·android studio
新鲜势力呀18 小时前
PHP 定时数据同步实战:从第三方接口超时到异步同步 + 增量更新架构优化全过程
android
星间都市山脉19 小时前
RecoveryUI 圆角屏安全边距配置及代码调用链
android·java·linux·windows·ubuntu