接上篇,本篇将会介绍C++设计模式中的Observer 观察者模式,和前2篇模板方法Template Method及Strategy 策略模式一样,仍属于“组件协作”模式。Observer 在某些领域也叫做 Event 。
文章目录
1. 动机( Motivation)
- 在软件构建过程中,我们需要为某些对象建立一种
“通知依赖关系”——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。 - 使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。
2. 代码演示Observer 观察者模式
假设以下的场景需求:做一个文件的分割器。虽然现在文件分割器使用的比较少,但是在之前是使用很广泛的,因为当时还是一个3寸盘的时代,经常需要将大文件拷走,就需要将大的文件分隔为多个文件拷贝携带走。
下面是一个伪码,只会展示主干部分。
2.1 常用处理方法
首先需要一个界面,mainform就是一个windows界面,父类为Form,主要有两个控件txtFilePath(大文件的全路径)和txtFileNumber(希望分割的文件个数)(此处给出的是后期修改后的代码)。
Button1_Click函数中收集用户输入的2个参数信息,传递给FileSplitter splitter,splitter调用split()
本文介绍了C++中的Observer观察者模式,详细阐述了其动机、代码演示和模式定义。通过一个文件分割器的例子展示了如何使用观察者模式来实现进度更新,讨论了依赖倒置原则,并给出了重构后的代码,强调了观察者模式在松耦合中的作用。
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



