グラフのデータ構造を処理するためのクラスを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クラスを返す必要があると思います。これはこれを行う正しい方法ですか、それとも設計は最初から壊れていますか?