如何正确构建和继承类?

时间:2012-05-05 15:05:58

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

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

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

现在我要编写2个协议类: 第一个 - 低层类,sendPacket,parseData方法等。 第二层 - 高层:setDeviceID,getDeviceID,onPayload等。

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

如:

协议类: void setPort(QSerialPort * port){m_port = port; }

sendPacket方法: m_port->置于(local_data);

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

1 个答案:

答案 0 :(得分:2)

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

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