单例模式(上)

qt案例:

 // 注册多个数据管理服务为单例类型,使它们可以在 QML 中被访问。
    qmlRegisterSingletonType<MainDataManage>("MainDataManage", 1, 0, "MinIns", MainDataManageGetInsTance);

这种注册方式非常适合在 QML 中集成复杂的后端逻辑,使得前端界面可以直接调用后端逻辑的单例实例进行数据处理或业务逻辑运算。

注册 MainDataManage 类型为单例类型。
在 QML 中,可以通过 MinIns 访问这个单例。
使用 MainDataManageGetInsTance 函数来获取 MainDataManage 的实例。
每个注册函数都通过指定一个类型、命名空间、版本号0和一个标识符MinIns,以及一个获取实例的函数。这允许在 QML 环境中访问这些 C++ 单例类的实例。
  • 类型 (Type): MainDataManage
    这是要注册为单例的 C++ 类的名称。
  • 命名空间 (Namespace): “MainDataManage”
    在 QML 中使用这个命名空间来访问单例。通常来说,这个命名空间可以看作是在 QML 中的一个标识符,不过在这里它也作为模块的名称,可能与类型名称相同。
  • 版本号 (Major and Minor Version): 1, 0
    这是注册类型的主版本号和次版本号。主版本号是 1,次版本号是 0。这对于管理 QML 中类型的版本非常有用,尤其是在API有更改时。
  • 标识符 (Identifier): “MinIns”
    这是在 QML 中引用此单例实例的标识符。通过这个标识符,QML 代码可以访问和实例化这个单例类。

功能:

这行代码的功能是在 QML 中注册一个单例服务,允许 QML 直接访问和操作 MainDataManage 类的实例,而这个实例是通过 MainDataManageGetInsTance 函数来创建和获取的。这种方式常用于将复杂的逻辑或数据管理从 C++ 后端暴露给 QML 前端。

MainDataManage 类的结构

#include <QObject>

// 假设 MainDataManage 是从 QObject 继承的,这在 Qt 中很常见,特别是需要信号和槽机制时。
class MainDataManage : public QObject {
   
   
    Q_OBJECT

private:
    // 私有的静态指针,指向类的唯一实例
    static MainDataManage* instance;

    // 私有构造函数,确保不会从外部创建类的实例
    MainDataManage() {
   
   }

public:
    // 删除拷贝构造函数和赋值运算符,确保类的唯一性
    MainDataManage(const MainDataManage&) = delete;
    void operator=
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值