我想设计一个像旅行商问题的地图 有许多节点,有些节点连接到另一个节点 一个节点可以连接到许多其他节点。
我设计了一些,哪一个更好?或者还有另外一种更好的设计? 1。)
class Node {
private int ID;
private int position-x;
private int position-y;
}
class Connection {
private int ID;
private Node first;
private Node second;
public void ConnectTwoNodes( Node a, Node b ) { ... }
}
2)。
class Node {
private int ID;
private int position-x;
private int position-y;
private ArrayList<Node> anotherNodes; // array of connected nodes
public void ConnectTo( Node another ) { ... }
}
答案 0 :(得分:1)
您的语言似乎是C ++。 您的解决方案1.存在以下问题:
在您的第二个解决方案中,似乎Node还包含其他节点。但实际上它们是独立存在的。同样,您需要关联或指向其他节点的指针。
我实际上更喜欢1.方法。或者是带有矩阵的非OO解决方案,其中“从”节点在一个轴上,“到”节点在另一个轴上。它还允许您处理从纽约到德克萨斯州巴黎的情况,但反之亦然,因为下午没有更多的航班。换句话说,是一个方向图。