在节点之间传递数据。如何保持清洁?

时间:2016-10-05 07:54:43

标签: java architecture software-design

我的应用程序"节点"与父母和孩子一起组织成树结构:

 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节点读出(将数据带到需要的位置)。对我来说,这个解决方案听起来有点不干净,并增加了应用程序的复杂性。

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

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

这意味着,应该在节点相互连接时添加DataConnectors。