通信协议中的组合

本文关键字:组合 通信协议 | 更新日期: 2023-09-27 18:17:31

我正在研究一种通信协议,它将通过USB或TCP连接与设备通信。

在代码中,我有一个名为Device的类,它表示设备。从这里开始,我希望能够做两件事;与设备通信(请求和写入数据),从设备备份和恢复设置。

我正在考虑实现如下组合:

Device
-BackupManager
--Backup()
--BackupAsync()
--Restore()
--RestoreAsync()
-RequestManager
--Request()

请求管理器实际上包含了大约7个以上的函数,它们基本上都是用不同的参数做同样的事情。

我遇到的问题是,为了让我执行请求,我必须调用Device.RequestManager.Request()。

您是否建议保持这种方式,或者Device类应该实现BackupManager和RequestManager的功能并将调用转发到适当的组件?

通信协议中的组合

  • 单一责任原则建议你这样做。
  • 代码气味"中间人"建议不要引入委托方法。
  • 我也建议你这么做
    • 缺点:客户端代码可读性稍差。你可以重新考虑类和函数的命名。
    • 优点1:这样维护起来容易多了。包括重构和调试。
  • 优点2:层次结构内部的可读性要容易得多,因为容器类的唯一职责就是包含某些东西(还是单一职责原则)。