1. 中介者模式的核心价值与应用场景
中介者模式(Mediator Pattern)是23种经典设计模式中行为型模式的一种,它通过引入中介者对象来封装对象间的交互,从而降低系统复杂度。这种模式特别适合解决对象间多对多交互导致的网状耦合问题。
在物联网(IoT)和AIoT系统中,中介者模式的价值尤为突出。想象一个智能家居场景:温度传感器检测到室温升高,需要通知空调降低温度、窗帘自动关闭、灯光调暗。如果让每个设备直接相互调用,系统会迅速变得难以维护。而通过中介者,所有设备只需与中央控制器通信,控制器负责协调各设备动作。
关键设计原则:中介者模式体现了迪米特法则(Law of Demeter),即"最少知识原则"。对象应当尽可能少地了解其他对象的内部细节。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. C++模板实现的技术解析
2.1 模板元编程的设计优势
本实现采用C++模板技术,相比传统面向对象实现具有三大优势:
- 零成本抽象:所有类型检查在编译期完成,运行时无额外开销
- 类型安全:通过
static_assert确保同事类必须继承指定接口 - 灵活扩展:支持任意数量和类型的消息参数
cpp复制template<typename T>
void check_colleague() {
static_assert(std::is_base_of<colleagueBase, T>::value,
"Colleague must inherit from colleagueBase");
}
2.2 同步/异步模式实现对比
同步模式(MEDIATOR_USE_TUPLE=0)
- 直接调用同事对象的recv方法
- 执行流程:发送→立即处理→返回
- 适用场景:实时性要求高的控制系统
异步模式(MEDIATOR_USE_TUPLE=1)
- 使用消息队列和后台线程
- 执行流程:发送→入队→后台处理→返回
- 线程安全实现要点:
std::mutex保护消息队列std::condition_variable实现生产者-消费者模型std::atomic<bool>控制线程生命周期
cpp复制// 异步模式
