【问题标题】:how to properly construct and inherit classes?如何正确构造和继承类?
【发布时间】:2012-05-05 15:05:57
【问题描述】:

我想通过串口编写通信接口。 (使用 Qt)

我有 QSerialPort 类,它提供了使用串行端口的接口。 我从 QSerialPort 类继承了 QMySerialPort,它为配置端口添加了一些功能和对话框窗口。

现在我想写 2 个协议类: First - 低层类、sendPacket、parseData 方法等。 第二 - 高层:setDeviceID、getDeviceID、onPayload 等。

我该怎么做? 首先想到的是创建一些 QSerialInterface 元类,其中将包括 QMySerialPort 的对象和 2 个协议层类。 我应该在它们之间建立一些联系。

如:

协议类: 无效 setPort(QSerialPort *port) { m_port = 端口; }

sendPacket 方法: m_port->send(local_data);

但我认为这种方法很糟糕。 你有什么想法? 也许我应该在这里使用设计模式?

【问题讨论】:

    标签: c++ algorithm qt design-patterns inheritance


    【解决方案1】:

    也许您应该缩小问题的范围以获得更有用的答案。也就是说,有几件事我想指出。

    • 尽量将 UI 代码与业务逻辑分开。更具体地说,配置对话框的代码在QMySerialPort 中没有位置。
    • 根据您在QSerialPort 上添加的功能类型,请记住,您可以通过组合而不是继承来使用QSerialPort,并且在许多情况下(如果不是大多数情况下)前者更可取。李>
    • 一般来说,尽量将每个接口/类的职责定义得尽可能狭窄和集中。解析数据应该在与发送/接收单个数据包不同的接口中进行。通过这种方式,您可以替换不同的通信媒介,同时保持整体协议和处理它的对象不变。
    • setPort 方法没问题,虽然我个人会将port 作为参数传递给构造函数。

    【讨论】:

      猜你喜欢
      • 2012-09-03
      • 2018-11-29
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多