C++发布订阅者模式:实现简单消息传递系统

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661

 
概述:这个C++示例演示了发布者-订阅者模式的基本实现。通过 `Event` 类,发布者 `Publisher` 发送数据,而订阅者 `Subscriber` 订阅并处置惩罚数据。通过简单的回调机制,实现了组件间松散耦合的消息传递。
好的,我将为你提供一个简单的C++实例,演示如何使用发布者-订阅者模式。在这个例子中,我们将使用C++11的标准库中的  头文件,以及线程支持。
首先,我们定义一个简单的变乱类,该变乱类将用于携带消息:
  1. // Event.h
  2. #pragma once
  3. #include <functional>
  4. template <typename... Args>
  5. class Event {
  6. public:
  7.     using Callback = std::function<void(Args...)>;
  8.     void subscribe(Callback callback) {
  9.         callbacks_.emplace_back(std::move(callback));
  10.     }
  11.     void notify(Args... args) const {
  12.         for (const auto& callback : callbacks_) {
  13.             callback(args...);
  14.         }
  15.     }
  16. private:
  17.     std::vector<Callback> callbacks_;
  18. };
复制代码
接下来,我们定义一个发布者类,它将包含一个变乱对象,并提供一个方法来触发该变乱:
  1. // Publisher.h
  2. #pragma once
  3. #include "Event.h"
  4. class Publisher {
  5. public:
  6.     Event<int> onDataReceived;
  7.     void sendData(int data) {
  8.         // 假设在这里进行一些数据处理
  9.         onDataReceived.notify(data);
  10.     }
  11. };
复制代码
然后,我们定义一个订阅者类,它将订阅发布者的变乱并定义处置惩罚函数:
[code]// Subscriber.h#pragma once#include "Event.h"#include class Subscriber {public:    void processData(int data) {        std::cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表