一、定义
定义对象间的一种一对多(变化)的依赖关系,以便当一个对象的状态发生改变时,所有依赖它的对象都得到通知并自动更新。
二、结构
- 使用面向对象的抽象,Observer模式使得我们可以独立地改变目标与观察者(通过add/remove),从而使二者之间的依赖关系达致松耦合。
- 目标发送通知时,无需指定观察者,通知会自动传播。
- 观察者自己决定是否需要订阅通知,目标对象对此一无所知。
- Observer模式是基于事件的UI框架中非常常用的设计模式,也是MVC模式的一个重要组成部分。(Java中的Listen机制)
分割大文件,需要一个进度条展示分割进度。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <iostream> #include "FileSplitter.hpp" using namespace std;
class FileSpliter { string m_filePath; int m_fileNumber; ProgressBar * m_progressBar; public: FileSpliter(const &string filePath, int fileNumber,ProgressBar * progressBar): m_filePath(filePath), m_fileNumer(fileNumber){ } void split(){ float progressVal; for(int i = 0; i < m_fileNumber; i++) { if(progressBar != nullptr) { progressVal =(i+1)/m_fileNumber; progressBar->setValue(progressVal); } } } };
|