C# 通信协议中的组合
我正在研究一种通信协议,该协议将通过USB或TCP连接与设备进行通信 在代码中,我有一个名为Device的类,它表示设备。从这里我想能够做两件事;与设备通信(请求和写入数据),并从设备备份和恢复设置 我正在考虑实施以下组合:C# 通信协议中的组合,c#,design-patterns,composition,C#,Design Patterns,Composition,我正在研究一种通信协议,该协议将通过USB或TCP连接与设备进行通信 在代码中,我有一个名为Device的类,它表示设备。从这里我想能够做两件事;与设备通信(请求和写入数据),并从设备备份和恢复设置 我正在考虑实施以下组合: Device -BackupManager --Backup() --BackupAsync() --Restore() --RestoreAsync() -RequestManager --Request() 请求管理器实际上包含7个以上的函数,这些函数使用不同的参数执
Device
-BackupManager
--Backup()
--BackupAsync()
--Restore()
--RestoreAsync()
-RequestManager
--Request()
请求管理器实际上包含7个以上的函数,这些函数使用不同的参数执行基本相同的操作
我遇到的问题是,为了执行请求,我必须调用Device.RequestManager.request()
您建议这样做,还是设备类同时实现BackupManager和RequestManager的功能,并将调用转发到适当的组件?- 建议您这样做
- 建议您不要引入委派方法
- 我也推荐你
- 缺点:客户端的可读性稍差。您可以重新考虑类和函数的命名
- 优点#1:这样维护起来容易多了。这包括重构和调试
- 优点#2:层次结构内部的可读性要容易得多,因为容器类的唯一职责是包含某些内容(再次强调单一职责原则)