5_软件重构_模块间通讯方式_事件

模块间通讯方式与事件设计

一、模块(Module)间通讯方式简介       

最近一大段的时间任务是做模块(Module)间通讯方案设计,未编码。通过调研,做法如下:

       观察者模式

              实现思路:维护一个回调函数列表(std::function 或函数指针),广播时循环调用。

优点:简单直接,性能高。

缺点:调用链耦合,容易出现回调地狱,模块之间绑定紧密。

       信号槽模式(Qt / boost::signals2)

实现思路:维护一个消息队列,广播时把消息写入多个队列,每个订阅模块消费自己的队列。

优点:解耦,异步处理,支持不同消费速度。

缺点:消息需要复制,内存开销大;实现稍复杂。

       事件总线()

实现思路:设计一个统一的 事件总线,模块之间只和总线交互。

事件总线可以支持 同步调用(直接回调)或 异步调用(队列/线程池)。

优点:解耦、扩展性好、支持广播与点对点。

缺点:需要设计完整的调度机制。

常见实现思路:

Apollo CyberRT / ROS2 的进程内 PubSub

一些开源库:

| 库名称          &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值