我想在 Java 中实现一个用于处理图形数据结构的类。我有一个 Node 类和一个 Edge 类。Graph 类维护两个列表:节点列表和边列表。每个节点必须有一个唯一的名称。我该如何防范这样的情况:
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 类,该类将保持图形结构的完整性。这是正确的做法还是设计从一开始就被打破了?