我想在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類,將維持圖形結構的完整性。這是做這件事的正確方式還是設計從一開始就被打破?
我已節點類內,並暴露其外面使用的接口。節點對象的任何更改也會更新圖形結構。你可以看到在我的博客的源代碼:http://dev.spartancoder.com/?q=graph-handling-class-project-graph-studio – 2008-09-16 13:42:27