C++循环类成员资格中的协议设计
Protocol design in C++, cyclic class membership
我正在(尝试)用C++设计一个通信协议,并希望抽象出协议的各个层,以便将来可以在需要时更改它们,而无需更改整个应用程序。
到目前为止,我已经设计了这个:
- 应用---例如气候>设定温度(70);
- 模块(例如。气候)---例如。protocol->SetRegister(23, 70);
- 协议层--- eg.msg[] = {0x4C, 0x55, 0x17, 0x46};comm->SendPacket(msg);
- 通信层
返回路径上出现问题:
- 通信层
- 协议层
- 模块
- 应用
我真的不希望应用程序不断地向模块询问数据,然后模块询问协议,协议询问通信层,但是每个类中的回调来"冒泡"数据似乎很混乱。一般来说,只有通信层知道是否有任何值得进一步处理的数据(通过协议层等)
有没有更好的设计模式?
很可能
您没有进行同步通信,因此您不能等到通信层获得答案。
所以我们拥有的是应用程序>模块>协议>通信。这一切都是为了传输端(除了来自各个层的任何重试等)。
您没有说数据实际上是如何收集的,通信层很可能不知道任何数据,直到您告诉它消息/事件系统在应用程序中。所以无论如何你都需要调用它,应用程序同时知道模块和所有通信层似乎是错误的。
因此,将收集到的数据传递给模块,并让它们沿着链传递,如果数据有意义,它最终会到达顶层。应用程序应"订阅"来自模块的事件以获取所需的数据(事件和观察器)。通信层之间不需要订阅,因为无论如何您都会调用它们来为他们提供工作,因此它们可以简单地返回处理结果。
相关文章:
- 使用循环创建类对象
- 如何在 c++ 中按预定义的顺序循环浏览类实例?
- 如何在头文件中声明类模板(由于循环依赖关系)
- 如何在具有循环依赖的类中dynamic_cast?
- 在C++中循环访问类继承
- 在类 c++ 中执行 while 循环
- C++ main 中的类循环
- 如何通过一个循环将多个文件的内容分配给不同的类属性?
- 类方法 - 数据结构中 For 循环的运行时错误
- 循环依赖,在继承类的情况下使用覆盖方法
- 用于处理多个通信协议处理的设计类
- C++ 继承向量问题(无限循环+在其他类中使用向量的问题)
- 我想在 C++ 中使用 for 循环创建类对象
- 解决C++中 3 个类的循环包含
- 如何 for 循环类变量数组
- 模板成员中的循环类依赖项
- 循环类依赖关系,同时在C++中包含头文件
- 未定义引用谷歌协议缓冲类
- C++循环类成员资格中的协议设计
- 当向前声明不可能尽可能优雅时,我如何解决循环类依赖