グラフデータ構造を扱うためのクラスをJavaで実装したいと思います。 NodeクラスとEdgeクラスがあります。 Graphクラスは、ノードのリストとエッジのリストの2つのリストを保持します。各ノードには一意の名前が必要です。どのように私はこのような状況を防ぐん: 新しい要素を追加するときにクローンを使用する必要がありますか?クローンをいつ使うべきですか?
Graph g = new Graph();
Node n1 = new Node("#1");
Node n2 = new Node("#2");
Edge e1 = new Edge("e#1", "#1", "#2");
// Each node is added like a reference
g.addNode(n1);
g.addNode(n2);
g.addEdge(e1);
// This will break the internal integrity of the graph
n1.setName("#3");
g.getNode("#2").setName("#4");
は私がグラフに追加するノードとエッジのクローンを作成し、グラフ構造的完全性を維持するNodeEnvelopeクラスを返すべきであると考えています。これは正しいことでしょうか、あるいはデザインが最初から壊れていますか?
ノードクラスをinnerにして、インターフェイスを使って外部に公開しました。ノードオブジェクトの変更は、グラフ構造を更新します。私のブログでソースコードを見ることができます:http://dev.spartancoder.com/?q=graph-handling-class-project-graph-studio –