【发布时间】:2016-03-29 09:28:38
【问题描述】:
我有一个从微控制器上的 CAN 接口捕获帧的 C++ A 类。我正在尝试实现另一个 B 类(以及 C 和 D..),它使用 A 类捕获的帧,一个接一个。实质上,A类根据帧的内容将捕获的帧从上层重定向到其中一个类。我是否应该实现某种事件处理机制(对于编程新手来说我不太熟悉),以便每次接收到一帧时,都会从上层向类的对象触发一个事件?或者我可以通过从 A 类继承 B、C、... 类等来实现这一点。有人可以帮助我如何在这里开发一个良好而简单的逻辑吗?
编辑:一个不太好的方法是我在 A 类中有一个 switch 语句,然后根据案例值调用 B、C、D 类之一的所谓过程方法.但是,这不是一个聪明的方法,因为现在 A 类使用 B、C、D 等类,这是我不想要的。 A 类不应该知道 B、C、D 类……
【问题讨论】:
-
我可能会为每个处理器定义一个通用接口(基类),它会声明一个“工作/进程”函数。我会将它们全部存储在一个容器中。我将有一个“控制器”类,它将使用类 A 来获取框架并将其传递给每个列表控制器。现在,如何生成控制器列表取决于您,这取决于顺序是否重要等...
-
我进行了编辑。你能再看看吗?
-
我明白了,你的意思是只有 B、C 或 D 类中的一个可以处理框架。您可以通过其中一个字段值知道哪个。这是工厂设计模式的一个非常常见的用法,在 google 上查找。如果您不知道哪个,那么您可以使用不太常见的责任链模式,但如果您愿意,我可以为此编写一些伪代码。
-
如果你能写一个伪代码,那将非常有帮助。
-
当然,但是哪个版本?你能通过查看框架来判断哪个类可以处理它吗?还是在尝试之前无法判断?
标签: c++ oop event-handling can-bus