C++ Qt实现观察者模式

本文介绍了如何在C++的Qt框架下实现观察者模式,通过该模式,当一个对象的状态改变时,所有依赖该对象的其他组件都能接收到通知并自动更新。以数据统计分析为例,当数据变化时,表格、柱状图和百分比等多种展示形式都能实时同步更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ Qt实现观察者模式

观察者模式大致理解

  1. 观察者模式定义了一系列对象之间的一对多关系
  2. 当一个对象改变状态, 其他依赖着都会受到通知

观察者模式例子

  • 对同一组数据进行统计分析时候, 我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些表示都依赖于同一组数据, 我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值