假設我們建立一個對象來表示一些網絡(社交,無線,無論)。所以我們有一些'節點'對象來表示網絡的種類,不同的節點可能會有不同的行爲等等。網絡有一個MutableList節點。Scala中對象引用的成本是多少?
但是每個節點都有鄰居,而這些鄰居也是節點。因此,在某個地方,每個節點都必須有一個該節點所有鄰居的列表 - 或者必須在需要時隨時生成這樣的列表。如果鄰居列表存儲在節點對象中,將它存儲爲(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//
}
方法(一)似乎是最容易的。我的第一個問題是,在Scala 2.8中這是否代價高昂,其次是它是否違反了DRY原則?