假设我们构建了一个对象来表示某种网络(社交、无线等)。因此,我们有一些“节点”对象来代表网络的种类,不同的节点可能具有不同的行为等。该网络具有节点的 MutableList。
但是每个节点都有邻居,这些邻居也是节点。因此,在每个节点上必须有一个列表,列出该节点的所有邻居,或者在需要时动态生成这样的列表。如果邻居列表存储在节点对象中,将更便宜地存储它(a)作为节点列表,还是(b)作为可用于引用网络中节点的数字列表?
以下是一些代码以增加清晰度:
但是每个节点都有邻居,这些邻居也是节点。因此,在每个节点上必须有一个列表,列出该节点的所有邻居,或者在需要时动态生成这样的列表。如果邻居列表存储在节点对象中,将更便宜地存储它(a)作为节点列表,还是(b)作为可用于引用网络中节点的数字列表?
以下是一些代码以增加清晰度:
//approach (a)
class network {
val nodes = new MutableList[Node]
// other stuff //
}
class Node {
val neighbors = new MutableList[Node]
// other stuff //
}
//approach (b)
class Network {
val nodes = new MutableList[Node]
val indexed_list = //(some function to get an indexed list off nodes)
//other stuff//
}
class Node {
val neighbors = MutableList[Int]
//other stuff//
}
方法(a)似乎是最简单的。我的第一个问题是,在Scala 2.8中是否成本高昂,第二个问题是它是否违反了DRY原则?