首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通信协议中的组合

通信协议中的组合
EN

Stack Overflow用户
提问于 2014-08-11 21:27:57
回答 1查看 44关注 0票数 1

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

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

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

代码语言:javascript
复制
Device
-BackupManager
--Backup()
--BackupAsync()
--Restore()
--RestoreAsync()
-RequestManager
--Request()

请求管理器实际上包含大约7个以上的函数,所有函数都用不同的参数做基本上相同的事情。

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

您是否建议保留这种方式,或者是否应该让Device类同时实现BackupManager和RequestManager的函数并将调用转发给适当的组件?

EN

回答 1

Stack Overflow用户

发布于 2014-08-13 07:33:21

  • Single Responsibility Principle建议您保持这种方式。
  • Code Smell "Middle Man"建议您不要引入委托方法。
  • 我建议您使用相同的代码<>H19缺点:客户端的代码可读性稍差。您可能会重新考虑类的命名和functions.
    • Advantage #1:这样维护就容易多了。这包括重构和容器#2:层次结构中的可读性要容易得多,因为容器类的惟一职责是包含某些内容(Single responsibility Principle again).

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25244449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档