观察者模式是定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
既多个观察者都依赖于同一个被观察者的数据,当被观察对象的数据发生改变时,则所有依赖于被观察对象的观察者,都会作出各自的更新动作。
例如:以不同的显示形式显示某一数据,LCD显示、Label中显示等
实现思想:
1、定义一个被观察对象(目标),其中可以有任意多个观察者,需要提供添加和删除观察者的接口,在被观察对象中定义通知观察者接口
2、定义观察者父类,添加刷新的虚函数接口
3、定义不同的观察者子类,重写刷新接口
实现代码如下:
定义观察者父类
#ifndef OBSERVER_H
#define OBSERVER_H
#include <QWidget>
class Observer : public QWidget
{
public:
Observer();
virtual void update(const int ) const = 0;
};
#endif // OBSERVER_H
Label显示数据的子类观察者
.h代码
#ifndef OBSERVERLABEL_H
#define OBSERVERLABEL_H
#include "Observer.h"
#include <QLabel>
class ObserverLabel : public Observer
{
public:
ObserverLabel();
void update(const int value) const override;
private:
QLabel *m_label;
};
#endif // OBSERVERLABEL_H
.cpp代码
#include "ObserverLabel.h"
#include <iostream>
#include <QHBoxLayout>
using namespace std;
ObserverLabel::ObserverLabel()
{
m_label = new