2011-02-08 128 views
1

我有一個問題,關於良好的應用程序設計,一直讓我幾天了。我們可以將其描述爲:保持樹視圖和節點分離

  • 我有一個由節點組成的樹結構,其中包含對子節點的引用。
  • 我現在想在TreeView中顯示那個結構(我是那個會實現TreeView的人)。
  • 我不希望節點'知道'有一個TreeView,使我能夠將這兩個組件分開。

那麼我在哪裏存儲節點是否擴展的信息(這些信息不是節點本身的一部分)。

任何想法如何以一種乾淨的方式實現這一點?

感謝,
Konne

回答

1

創建一個TreeViewModal類,該類綁定視圖和實際模態。顯然這被稱爲Model/View/ViewModel pattern。用於TreeView的Here is an example。這兩個鏈接都使用C#編寫代碼,但可以輕鬆移植到任何語言。

0

如果每個節點都有一個唯一的哈希的關鍵,你可以添加一個哈希表來TreeView包含的擴展節點的密鑰。

+0

嗯,我想到了,但它看起來效率極低。另一個問題是我要求用戶瞭解我的樹的實現細節(他們需要實現hash_function或<) – 2011-02-08 02:38:28

+0

您可以構建一個由「TreeView」管理的並行樹,其中每個節點指向相應的「節點「,但是這更加開銷。如果你想保持結構分離,你需要有一種方法讓一個結構引用另一個結構中的節點。 – 2011-02-08 02:45:59