【问题标题】:Passing data between nodes. How to keep them clean?在节点之间传递数据。如何让它们保持清洁?
【发布时间】:2017-02-13 13:35:37
【问题描述】:

我的应用程序“节点”组织为具有父子节点的树结构:

 A---------B---------C---------D---------E
                               \---------F

A 是最高祖先,而 E 和 F 是最低后代。执行流程是从上升端到下降端。

每个节点都接受它们需要处理的特定类型的数据。所以在设计决策中,节点可以接收的数据是相互隔离的。

现在出现一个问题,假设节点E和F需要某种类型的数据,但它只在C节点可用。所以我需要一种机制来将数据从 C 节点传输到 E 和 F 节点。

解决方案 1:允许后代节点访问其祖先节点的数据。所以我可以将该数据添加到 C 节点,然后从 E 和 F 节点中取出。我不喜欢这个解决方案的是,所有中间节点(包括 C 和 D)都将包含一些他们实际上不需要的数据。对我来说,这听起来像是将来管理应用程序的问题。

解决方案2:引入一个临时存储类,可以在C中用来存储数据,并从E和F节点读出(将数据带到需要的地方)。对我来说,这个解决方案听起来有点不干净,并且增加了应用程序的复杂性。

所以如果你是我,你会选择哪种解决方案,或者我看不到的不同解决方案?

由于我是软件设计的新手,非常欢迎您提出任何意见和建议。

谢谢。

【问题讨论】:

  • 您能添加一些代码以使其清晰吗?
  • 我可以在这里看到一条消息总线正在提供帮助。

标签: java architecture software-design


【解决方案1】:

节点应该相互独立,并且不应该知道节点的顺序和布局。

连接节点的类应该具有在节点之间传播数据的知识。 所以更好的选择是引入DataConnector 一旦 C 完成其进程,CtoEDataConnector 将收到通知。一旦收到通知,它将访问 C 的数据容器并提取数据,并将填充到节点 E。

也就是说,DataConnector 应该在节点相互连接时添加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2019-01-28
    • 2015-04-10
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多