2016-10-05 4 views
1

マイアプリケーション「ノードは」親と子供とのツリー構造として編成されていますEとFは下の子孫ている間ノード間でデータを渡す。それらをきれいに保つ方法?

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

Aがトップの祖先です。実行フローは、優位側から子孫側に向かいます。

すべての単一ノードは、処理する必要がある特定のタイプのデータを受け入れます。したがって、設計上の決定では、ノードが受信できるデータは互いに分離されています。

ノードEとノードFが特定の種類のデータを必要としているとしますが、Cノードでのみ使用できるとします。ですから、私はそのデータをCノードからEノードとFノードに転送するメカニズムが必要です。

解決策1:子孫ノードが祖先ノードのデータにアクセスできるようにします。ですから、私はそのデータをCノードに追加して、EノードとFノードから取得することができます。この解決策について私が気に入らないのは、すべての仲介ノード(CとDを含む)には、実際には必要ないデータが含まれているということです。私には、将来アプリケーションを管理する際の問題のように思えます。

解決策2:データを格納するためにCで使用でき、EノードとFノードから読み出す(必要な場所にデータを持ち込む)一時記憶クラスを導入します。このソリューションは、私にとって、何とか汚れているように聞こえ、アプリケーションを複雑にします。

それであなたは私のものでしたか、どんな解決策をとるか、見えない別の解決策でしたか?

私はソフトウェア設計に新しいので、あなたからのコメントや提案は非常に歓迎されます。

ありがとうございます。

+0

明確にするためにいくつかのコードを追加できますか? –

+0

私はメッセージバスがここで助けになっているのを見ることができます。 –

答えて

0

ノードは互いに独立している必要があり、ノードの順序とレイアウトには何の知識もないはずです。

ノードを接続するクラスは、ノード間でデータを伝播する知識が必要です。 ので、より良いオプションは、それがCのデータコンテナにアクセスし、データを抽出し、

E.をノードAに取り込まれるだろう通知を得たそのprocess.onceに行われるCに一度通知を受け取りますDataConnector CtoEDataConnectorを導入することですつまり、ノードが相互に接続された時点でDataConnectorsを追加する必要があります。

関連する問題