通信协议中的组成

时间:2014-08-11 13:27:57

标签: c# design-patterns composition

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

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

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

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

请求管理器实际上包含大约7个函数,它们使用不同的参数完全基本相同。

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

您是否建议将此方式保留,或者Device类是否应实现BackupManager和RequestManager的功能并将调用转发给相应的组件?

1 个答案:

答案 0 :(得分:1)

  • Single Responsibility Principle建议你这样离开。
  • Code Smell "Middle Man"建议您不要介绍委派方法。
  • 我建议你一样
    • 缺点:客户端的代码可读性稍差。您可以重新考虑类和函数的命名。
    • 优势#1:通过这种方式维护更加轻松。这包括重构和调试。
    • 优势#2:层次结构中的可读性更容易,因为容器类的唯一责任是包含某些内容(单一责任原则)。