C++ Qt实现观察者模式
观察者模式大致理解
- 观察者模式定义了一系列对象之间的一对多关系
- 当一个对象改变状态, 其他依赖着都会受到通知
观察者模式例子
- 对同一组数据进行统计分析时候, 我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些表示都依赖于同一组数据, 我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。 Observer 模式就是解决了这一个问题。
我没有画UML图,你可以看看别人的。我觉得UML类图学设计模式时更容易懂,这样可以事半功倍。快速入门常用几种关系的UML类图
代码实现
#include <QCoreApplication>
#include <QString>
#include <QList>
#include <QDebug>
// 没用过Qt的朋友,qDebug 就是打印,改成 cout, QList 该层 list
// 这里为了方便全写在同一个cpp里了
class Subject;
// 观察者基类
class Observe
{
public:
Observe(Subject* pSubject)
{
m_pSubject = pSubject; // 注册被观察者, 这里采用简单的方法,新建对象是注册,你可以写个注册函数,
}
// 每个观察者,可以根据自己做不同的操作
virtual void updata() = 0;
protected:
Subject* m_pSubject;
};
// 被观察者基类
class Subject
{
public:
virtual void addObserve(Observe* pObserveMode) = 0;
virtual